簡體   English   中英

將2D數組轉換為Java中的圖像?

[英]Convert 2D array to Image in Java?

我有2D數組(只有1 -0值),但是它的類型是int [] []。

現在我想將該數組轉換為圖像(黑白二進制圖像)。 但是我找不到適合我問題的答案。 我已經搜索了谷歌和這個網站。 誰能幫我??

我已經嘗試了以下代碼,但是

   String path = "C:\\Users\\Cyrus\\Desktop\\test.jpg";
    BufferedImage image = new BufferedImage(b.length, b[0].length, BufferedImage.TYPE_INT_RGB);
    for (int x = 0; x < b.length; x++) { // b is my 2D array
        for (int y = 0; y < b[x].length; y++) {
            image.setRGB(x, y, b[x][y]);
        }
    }

    File ImageFile = new File(path);
    try {
        ImageIO.write(image, "jpg", ImageFile);
    } catch (IOException e) {
        e.printStackTrace();
    }

//修改代碼后

String path = "C:\\Users\\Cyrus\\Desktop\\test.jpg";
    BufferedImage image = new BufferedImage(a.length, a[0].length, BufferedImage.TYPE_INT_RGB);
    for (int x = 0; x < a.length; x++) {
        for (int y = 0; y < a[x].length; y++) {
             int value ;
             if(a[x][y]==1)  value = new Color(255,255,255).getRGB();
             else value = new Color(0,0,0).getRGB();
            image.setRGB(x, y, value);

        }
    }

    File ImageFile = new File(path);
    try {
        ImageIO.write(image, "jpg", ImageFile);
    } catch (IOException e) {
        e.printStackTrace();
    }

但是返回錯誤的圖像

您能否具體說明獲得的結果? 它引發了一些異常嗎? 還是程序正常完成但沒有產生您想要的結果?

您應該注意到,這里要使用二進制圖像,那么選擇JPG有什么特殊的原因嗎? 據我所知,JPG不是三元組RGB的本機表示形式(例如bmp)。 jpeg文件是數據序列的“容器”,其中文件頭(EXIF,QT,...)中包含大量信息,並用標記進行標記。 為了像處理數組中的“像素值”那樣直接處理jpg文件中的數據序列,必須對其進行“解碼”,然后在播放圖像后,將主圖像數據再次“編碼”為jpg流。

要直接使用像素值,建議您使用其他格式(例如TGA,png,...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM