3

Mime タイプを使用して ImageIO の出力を定義しようとしています。シンプルな write() メソッド

public static boolean write(RenderedImage im,
            String formatName,
            OutputStream output)
                     throws IOException

は「形式の非公式名」を使用します。(例: "png")。MIME タイプ (「image/png」など) に相当するものや、イメージを書き込む目的を達成するコードに失敗するものはありますか? 私が見つけた唯一の出発点は

public static Iterator<ImageWriter> getImageWritersByMIMEType(String MIMEType)

ImageWriterなどを必要とする、はるかに複雑なようでIIOStream、解決策を作成できませんでした。

更新: MIME を使用している理由は、それが SVG の画像の正式な部分であるためです。

 xlink:href="data:image/png;base64,iVBORw0KGgoAAAA...

あまり定義されていない「非公式」形式に変換するのではなく、それを使用することが適切であると思われました。私は自分の質問に対する正確な解決策を(java2s.comで)見つけることができ、それを回答として追加しました。

4

2 に答える 2

4

java2sチュートリアルで私の質問に対する正式な解決策を見つけました

public class Main {
  static public void main(String args[]) throws Exception {
    int width = 200, height = 200;
    BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);

    Graphics2D ig2 = bi.createGraphics();
    ig2.fillRect(0, 0, width - 1, height - 1);

    Iterator imageWriters = getImageWritersByMIMEType("image/gif");
    ImageWriter imageWriter = (ImageWriter) imageWriters.next();
    File file = new File("filename.gif");
    ImageOutputStream ios = ImageIO.createImageOutputStream(file);
    imageWriter.setOutput(ios);
    imageWriter.write(bi);
  }

(@haraldKによって修正されたように編集)。

于 2013-09-04T14:07:29.863 に答える
2

Windows XP、Java 6 コンピューターで getReaderFormatNames メソッドを使用して、ImageIO 非公式フォーマットのリストを出力しました。

BMP, bmp, jpg, JPG, wbmp, jpeg, png, PNG, JPEG, WBMP, GIF, gif

同等の MIME タイプは次のとおりです。

image/bmp
image/jpeg
image/png
image/gif

WBMP 形式の MIME が見つかりませんでした。

MIME から「image/」を取り除いて、非公式の形式を ImageIO の読み取りまたは書き込みメソッドに渡すことができるようです。

于 2013-09-04T13:27:35.213 に答える