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