簡體   English   中英

用於ImageIO的Mimetypes read()和write()

[英]Mimetypes for ImageIO read() and write()

我正在嘗試使用Mime Types來定義ImageIO的輸出。 簡單的write()方法

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

使用“格式的非正式名稱”。 (例如“png”)。 是否存在mimetypes的簡單等價物(例如“image / png”)或者是否達不到編寫圖像目的的代碼? 我發現的唯一起點是

public static Iterator<ImageWriter> getImageWritersByMIMEType(String MIMEType)

這似乎要復雜得多,需要ImageWriterIIOStream等,而我還沒有設法創建解決方案。

更新:我使用MIME的原因是它是SVG中圖像的正式部分,例如

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

使用它而不是將其轉換為不太明確的“非正式”格式似乎是合適的。 我設法在我的問題中找到了一個精確的解決方案(在java2s.com中),並將其添加為答案。

我現在已經找到了一個關於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更正)。

我在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讀取或寫入方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM