データベースに保存されている画像をユーザーに応答するレスト サービスを設計しました。サービスは正常に動作します。サービスは画像を jpg 形式で応答します。ユーザーが画像を jpg 形式でアップロードした場合、応答も問題ありません。画像が他の形式の場合、応答を画像としてレンダリングすることはできません。すべての入力画像タイプに対して、jpg コンバーターまたはエンコーダーを作成する必要があります。これを達成する方法はありますか?
質問する
22803 次
1 に答える
12
をご覧くださいImageIO
。JPEG、PNG、BMP、WBMP、GIF の読み書きをサポートしています。
JAI API は TIFF サポートも提供します。私は以前、Nikon カメラ用の RAW プラグインも使用しました。
詳細については、イメージの操作とJavaDocsを参照してください。
例で更新
ソース イメージがないと適切なテストを行うことはできませんが、これが基本的なワークフローです。
を入力として使用File
しましたが、基本的な概念を示すために、InputStream
and OutputStream
(as ImageIO
can read/write File
s)を作成しました。
File inputFile = new File("/path/to/image.png");
File outputFile = new File("Test.jpg");
try (InputStream is = new FileInputStream(inputFile)) {
BufferedImage image = ImageIO.read(is);
try (OutputStream os = new FileOutputStream(outputFile)) {
ImageIO.write(image, "jpg", os);
} catch (Exception exp) {
exp.printStackTrace();
}
} catch (Exception exp) {
exp.printStackTrace();
}
更新しました
上記のコードを使用して、ペイントで作成したPNGファイルをJPGに変換できました...
PNG/JPG
入力ストリームと出力ストリームを and に変換することもできますがImageInputStream
、ImageOutputStream
これは通常、特定の画像形式のプロバイダーを検索するときに行われます。
File inputFile = new File("...");
File outputFile = new File("Test.jpg");
try (InputStream is = new FileInputStream(inputFile)) {
ImageInputStream iis = ImageIO.createImageInputStream(is);
BufferedImage image = ImageIO.read(iis);
try (OutputStream os = new FileOutputStream(outputFile)) {
ImageOutputStream ios = ImageIO.createImageOutputStream(os);
ImageIO.write(image, "jpg", ios);
} catch (Exception exp) {
exp.printStackTrace();
}
} catch (Exception exp) {
exp.printStackTrace();
}
于 2013-01-31T05:40:09.167 に答える