将BufferedImage保存到JPG时数据已更改,但工作PNG

时间:2013-11-18 09:40:23

标签: java image jpeg bufferedimage save-image

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

1 个答案:

答案 0 :(得分:2)

  

当你把数据写成jpg时,你可以帮我制作数据吗,数据没有改变。

不,不可能使用JPG。 Even 100% quality JPG is lossy.你必须选择PNG或其他无损的东西。