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);
そして、ブロブはあなたの叔父です...