我正在尝试使用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中),并将其添加为答案。
答案 0 :(得分:3)
我现在在java2s tutorial
上找到了我的问题的正式解决方案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更正)。
答案 1 :(得分: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读取或写入方法。