[英]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.