java.awt.Image とても簡単です。画像を書き込んだり保存したりする手段も、画像の基になるピクセルデータにアクセスする手段も提供していません。
最初のステップは、java.awt.Imageを変換することです。 ImageIOというものに サポートすることができます。これにより、画像データを書き出すことができます...
ImageIO RenderedImageが必要です プライマリイメージソースとして。 BufferedImage デフォルトのライブラリ内でのこのインターフェイスの唯一の実装です...
残念ながら、一方から他方に変換するための単純な方法はありません。幸いなことに、それは難しいことではありません。
Image img = ...;
BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = bi.createGraphics();
g2d.drawImage(img, 0, 0, null);
g2d.dispose();
基本的に、これは元のjava.awt.Imageをペイントするだけです。 BufferedImageに
次に、InputStreamを生成できるように、何らかの方法で画像を保存する必要があります。 ...
これは最適とは言えませんが、仕事は終わります。
ByteArrayOutputStream baos = null;
try {
baos = new ByteArrayOutputStream();
ImageIO.write(bi, "png", baos);
} finally {
try {
baos.close();
} catch (Exception e) {
}
}
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
基本的に、画像をByteArrayOutputStreamに書き出します。 結果を使用してByteArrayInputStreamを生成します
今。メモリが問題であるか、画像がかなり大きい場合は、最初に画像をFileに書き込むことができます。 次に、Fileを読み取るだけです。 ある種のInputStreamを介して戻ってきます 代わりに...
最後に、InputStreamを設定します 必要な列に...
PreparedStatement stmt = null;
//...
stmt.setBlob(parameterIndex, bais);
そして、ブロブはあなたの叔父です...