[英]File I/O Stream Vs (ImageIO.read OR ImageIO.write) method
[英]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)
這似乎要復雜得多,需要ImageWriter
, IIOStream
等,而我還沒有設法創建解決方案。
更新:我使用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.