2009-10-16 41 views
42

イメージのバイトを含むJavaのbyte []配列が与えられました。イメージに出力する必要があります。これをどうやってやりますか? Javaのドキュメントによると、それは(あなたのMemoryImageSourceを渡すあなたがメモリ内のオブジェクトに自分のバイト配列を入れてthe MemoryImageSource Classを使用する必要があるように見えますし、次のComponent.createImage(ImageProducerを)を使用イメージへのバイト配列

答えて

65
BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes)); 
+6

これは質問に答えていない、問題は、画像ファイルへの書き込みのためでした。この回答は、画像ファイルから読み込むためのものです。すべてのアップ票には何がありますか? – Sixtoo

+5

タイトルによれば、バイト配列があり、Imageが必要であるとの質問がありますが、これがそうです。 –

1

本当にありがとうございましたImageProducerを実装しています)。

1

すでに配列が(例えばRGB、ARGB、BGRなど)であるバイトが[]あなたがBufferedImage.setRGB(...)、またはBufferedImage.getRaster()WritableRaster.setPixels(...)またはWritableRaster.setSamples(...)の組み合わせを使用することができるかもしれませんどのような形式を知っているように聞こえるので。 Unforunatelyの両方の方法では、画像フォーマットに応じてbyte []をint []、float []またはdouble []のいずれかに変換する必要があります。

20

画像の種類が分かり、ファイルを生成したい場合は、BufferedImageインスタンスを取得する必要はありません。正しい拡張子を持つファイルにバイトを書き込むだけです。

OutputStream out = null; 

try { 
    out = new BufferedOutputStream(new FileOutputStream(path)); 
    out.write(bytes); 
} finally { 
    if (out != null) out.close(); 
} 
2
From Database. 
Blob blob = resultSet.getBlob("pictureBlob");    
byte [] data = blob.getBytes(1, (int) blob.length()); 
BufferedImage img = null; 
try { 
img = ImageIO.read(new ByteArrayInputStream(data)); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
drawPicture(img); // void drawPicture(Image img); 
関連する問題