0

ここに、画像をバイト配列に変換するこのメソッドがあります。

public byte[] imageToCompressedByteArray(Image image) throws IOException {
//load the image
String f = "C:\\Users\\mamed\\Documents\\NetBeansProjects\\Main\\src\\resources\\accept.png";
image = ImageIO.read(new FileInputStream(new File(f)));


// get image size
int width = image.getWidth(null);
int height = image.getHeight(null);


try {
  int[] imageSource = new int[width * height];
  PixelGrabber pg = new PixelGrabber(image, 0, 0, width, height, imageSource, 0, width);
  pg.grabPixels();


  ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); 
  GZIPOutputStream zippedStream = new GZIPOutputStream(byteStream);
  ObjectOutputStream objectStream = new ObjectOutputStream(zippedStream);
  objectStream.writeShort(width);
  objectStream.writeShort(height);
  objectStream.writeObject(imageSource);
  objectStream.flush();
  objectStream.close();
  return byteStream.toByteArray();
}
catch (Exception e) {
  throw new IOException("Error storing image in object: " + e);
}

}

ただし、これを機能させることはできません。つまり、画像を読み込んで変換することができず、何が問題なのかわかりません。

4

2 に答える 2

0

画像のパスが正しく、読み込まれた画像が破損していないことを確認してください。

私はあなたのコードを変更していません.1778416 byesが画像ファイルから読み取られていることがわかります。

ここに画像の説明を入力

于 2013-08-14T08:10:37.370 に答える
0

プログラムに問題はありません。画像ファイルが破損しているか、画像パスが正しくない可能性があります。

于 2013-08-14T08:10:57.403 に答える