如何将类型为TYPE_INT_ARGB的BufferedImage保存为jpg格式?
程序生成了以下这张图片:
这张图片看起来没问题,但是当我尝试以以下方式保存时:
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(byteStream);
try {
ImageIO.write(buffImg, "jpg", bos);
// argb
byteStream.flush();
byte[] newImage = byteStream.toByteArray();
OutputStream out = new BufferedOutputStream(new FileOutputStream("D:\\test.jpg"));
out.write(newImage);
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
结果如下:
问题出在alpha层上,但是不知道如何解决。png格式不适合我,需要jpg。
FileOutputStream
时,为什么要先将数据写入字节数组,再将字节写入文件?相关的:使用诸如“BufferedImage JPG 颜色错误”的关键字进行搜索会产生一些结果,似乎在某些情况下会发生这种情况。 - Marco13