Gwa*_*alk 3 java jpeg graphics2d
如何将带有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();
}
Run Code Online (Sandbox Code Playgroud)
结果是:

了解这是由于alpha层,但不知道如何解决它.Png格式不适合我,需要jpg.
好!我已经解决了.一切都很简单.不知道这是一个好的决定,它有多快.我还没有找到任何其他的.所以我们需要的是定义新的BufferedImage.
BufferedImage buffImg = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = buffImg.createGraphics();
// ... other code we need
BufferedImage img= new BufferedImage(buffImg.getWidth(), buffImg.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = img.createGraphics();
g2d.drawImage(buffImg, 0, 0, null);
g2d.dispose();
Run Code Online (Sandbox Code Playgroud)
如果有任何改进这种方法的想法,欢迎您的光临.
| 归档时间: |
|
| 查看次数: |
1639 次 |
| 最近记录: |