0

バイト配列を画像ファイルに変換したい。これは私のコードの一部です

      BufferedImage image = user_space(getImage(image_path(path,name,"jpg")));

            System.out.println("Image:"+image);
           //Image : BufferedImage@12d263f: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@12a0f6c transparency = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 466 height = 336 #numData Elements 3 dataOff[0] = 2
            decode = decode_text(get_byte_data(image)); 
            try {
                System.out.println("length :"+decode.length);
                //length :- 73
                BufferedImage bImageFromConvert = ImageIO.read(new ByteArrayInputStream(decode));
                System.out.println(bImageFromConvert);          
                ImageIO.write(bImageFromConvert, "jpg", new File(
                        "D:/eeraj/new-darksouls.jpg"));
                }

     private byte[] get_byte_data(BufferedImage image)
       {
        WritableRaster raster   = image.getRaster();
        DataBufferByte buffer = (DataBufferByte)raster.getDataBuffer();
        return buffer.getData();
       }

     private byte[] decode_text(byte[] image)
        {
        int length = 0;
        int offset  = 24;
        //loop through 32 bytes of data to determine text length    
        for(int i=24; i<32; ++i) //i=24 will also work, as only the 4th byte   contains real data
        {
            length = (length << 1) | (image[i] & 1);
        }      
        byte[] result = new byte[length];                
        //loop through each byte of text
        for(int b=0; b<result.length; ++b )
        {

            //loop through each bit within a byte of text
            for(int i=0; i<8; ++i, ++offset)
            {
                //assign bit: [(new byte value) << 1] OR [(text byte) AND 1]
                result[b] = (byte)((result[b] << 1) | (image[offset] & 1));
            }
        }
        return result;
    }

エラーが発生します

            java.lang.IllegalArgumentException: im == null!
                  at javax.imageio.ImageIO.write(Unknown Source)
                  at javax.imageio.ImageIO.write(Unknown Source)

ImageIO.read メソッドが null を返しています。その結果、後でイメージを書き込もうとすると例外が発生します。

この問題の解決策を見つけるために Google で検索しましたが、画像ヘッダー情報を変更する以外に具体的なものは何も見つかりませんでした。

この問題を解決するにはどうすればよいか教えてください。

4

0 に答える 0