我有一个数据为{0的bufferedImage图像; 24; 40; 0; 12; 28; 11; 37; ....}我把它保存到一个代码为
的文件中File file = new File(filename);
BufferedImage image = ImageIO.read(file);
String ext = "jpg";
try
{
file.delete();
ImageIO.write(image,ext,file);
return true;
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,
"Image could not be saved!","Error",JOptionPane.ERROR_MESSAGE);
return false;
}
但是当我读到它时,数据已被更改。 imgBytes = {2; 25; 41; 0; 13; 29; 12; 35; ...}
你能不能帮我把数据写成jpg,数据没有改变。
非常感谢!
代码阅读
private void read()
{
img = ImageIO.read(file);
BufferedImage image = copyToBuffer(img);
imgBytes = getImageBytes(image);
}
private BufferedImage copyToBuffer(BufferedImage image)
{
BufferedImage newImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
Graphics2D graphics = newImage.createGraphics();
graphics.drawRenderedImage(image, null);
graphics.dispose();
return newImage;
}
private byte[] getImageBytes(BufferedImage image)
{
WritableRaster raster = image.getRaster();
DataBufferByte buffer = (DataBufferByte)raster.getDataBuffer();
return buffer.getData();
}
答案 0 :(得分:2)
当你把数据写成jpg时,你可以帮我制作数据吗,数据没有改变。
不,不可能使用JPG。 Even 100% quality JPG is lossy.你必须选择PNG或其他无损的东西。