-2

データベースに保存されている画像をユーザーに応答するレスト サービスを設計しました。サービスは正常に動作します。サービスは画像を jpg 形式で応答します。ユーザーが画像を jpg 形式でアップロードした場合、応答も問題ありません。画像が他の形式の場合、応答を画像としてレンダリングすることはできません。すべての入力画像タイプに対して、jpg コンバーターまたはエンコーダーを作成する必要があります。これを達成する方法はありますか?

4

1 に答える 1

12

をご覧くださいImageIO。JPEG、PNG、BMP、WBMP、GIF の読み書きをサポートしています。

JAI API は TIFF サポートも提供します。私は以前、Nikon カメラ用の RAW プラグインも使用しました。

詳細については、イメージの操作とJavaDocsを参照してください。

例で更新

ソース イメージがないと適切なテストを行うことはできませんが、これが基本的なワークフローです。

を入力として使用Fileしましたが、基本的な概念を示すために、InputStreamand OutputStream(as ImageIOcan read/write Files)を作成しました。

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 に変換することもできますがImageInputStreamImageOutputStreamこれは通常、特定の画像形式のプロバイダーを検索するときに行われます。

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 に答える