编程语言
首页 > 编程语言> > java – 用于ImageIO的Mimetypes read()和write()

java – 用于ImageIO的Mimetypes read()和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 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更正).

标签:javax-imageio,java,mime-types
来源: https://codeday.me/bug/20190831/1776635.html