Tôi gặp sự cố khi viết tệp đệm vào jpg
tệp. trong phương pháp của tôi, tôi nhận được một bufferedimage
như thông số mà tôi cần phải viết trong một File-ImageIO không thể ghi hình ảnh đệm vào tệp
đây là những gì tôi đang làm:
public boolean writeToFile(BufferedImage buff,String savePath) {
try {
System.out.println(buff.toString());
ImageIO.write(buff, ".jpg", new File(savePath));
return true;
} catch (Exception e) {
e.printStackTrace();
}
}
ở đây là những gì được in bằng buff.toString()
:
[email protected]: type = 1 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0 IntegerInterleavedRaster: width = 1024 height = 172 #Bands = 3 xOff = 0 yOff = 0 dataOffset[0] 0
chương trình chạy tốt mà không có bất kỳ ngoại lệ nào, nhưng kích thước tệp jpg được tạo là 0 bytes
i trie d viết hình ảnh mà không sử dụng ImageIO:
public boolean writeToFile(BufferedImage buff,String savePath) {
try {
System.out.println("got image : " + buff.toString());
Iterator iter = ImageIO.getImageWritersByFormatName("jpeg");
ImageWriter writer = (ImageWriter)iter.next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(.5f);
File file = new File(savePath);
FileImageOutputStream output = new FileImageOutputStream(file);
writer.setOutput(output);
IIOImage image = new IIOImage(buff, null, null);
writer.write(null, image, iwp);
writer.dispose();
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
Và điều này hoàn toàn ổn.
Tại sao nó không hoạt động với ImageIO?
Hoạt động của nó! Cảm ơn – JAVAGeek