BufferedImageをバイト配列に変換しようとしています。私には2つの条件があります。 1.私はイメージの品質を失うべきではありません。 2.バイト配列のサイズは、実際のイメージと同じにする必要があります。私はいくつかのオプションを試しました。BufferedImageを高品質でサイズを増やすことなくbyte []に変換します。
オプション1:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "png", baos);
baos.flush();
byte[] imageBytes = baos.toByteArray();
baos.close();
オプション2:
WritableRaster raster = image.getRaster();
DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
byte[] imageBytes = data.getData();
これらのオプションの両方が(大きな画像用二重以上)画像のサイズを増大させます。
ありがとうございました。ありがとう!
私は 'java'タグを追加しました。これが正しいと思っていますか? – home
イメージのサイズはどのように定義しますか?そのイメージを含むファイルのサイズ?それを保持する 'Image'インスタンスによって使用されるメモリ?前者の場合は、格納する書式に依存します。後者の場合は、実装に依存します。また、作成している '' byte [] 'のサイズとソースイメージの" size "は何ですか? – Jeffrey
* "バイト配列のサイズは実際のイメージと同じでなければなりません" *これはかなり任意の必要条件です。あなたの先生、それを誰が指定しましたか? –