1

我有一个带有数据 {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();
    }
4

1 回答 1

2

你能帮我把数据写成jpg,数据没有改变。

不,不可能使用JPG。即使是 100% 质量的 JPG 也是有损的。你将不得不去 PNG 或其他无损的东西。

于 2013-11-18T09:46:02.853 回答