java - ImageIO 无法将缓冲图像写入文件

标签 java file jpeg javax.imageio

我在将缓冲图像写入 jpg 文件时遇到了一些问题。 在我的方法中,我得到一个 bufferedimage 作为我需要写入文件的参数-

这是我正在做的:

public boolean writeToFile(BufferedImage buff,String savePath) {

        try {

            System.out.println(buff.toString());
            ImageIO.write(buff, ".jpg", new File(savePath));
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        } 
   }

这是 buff.toString() 打印的内容:

BufferedImage@8046f4: type = 1 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0 IntegerInterleavedRaster: width = 1024 height = 172 #Bands = 3 xOff = 0 yOff = 0 dataOffset[0] 0

程序运行正常,没有任何异常,但生成的jpg文件大小为0字节

我尝试在不使用 ImageIO 的情况下编写图像:

public boolean writeToFile(BufferedImage buff,String savePath) {



        try {

            System.out.println("got image : " + buff.toString());
            Iterator iter = ImageIO.getImageWritersByFormatName("jpeg");
            ImageWriter writer = (ImageWriter)iter.next();
            ImageWriteParam iwp = writer.getDefaultWriteParam();


            iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            iwp.setCompressionQuality(.5f); 


            File file = new File(savePath);
            FileImageOutputStream output = new FileImageOutputStream(file);
            writer.setOutput(output);
            IIOImage image = new IIOImage(buff, null, null);
            writer.write(null, image, iwp);
            writer.dispose();

            return true;
        } catch (Exception e) {
             e.printStackTrace();
        }

        return false;
    }

这绝对没问题。

为什么它不能与 ImageIO 一起使用?

最佳答案

从您的格式名称中删除 .

ImageIO.write(buff, "jpg", new File(savePath));

关于java - ImageIO 无法将缓冲图像写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11530901/

相关文章:

java - 修改 HTML 和 JSP

c++ - 从命令行c++发送文本文件名

Linux - 如何在删除文件名中的模式时批量重命名文件

pdf - 如何使用 ImageMagick 将已填写表单的 PDF 转换为 JPEG 图像并保留表单数据?

c# - C# 中的 JPG 到 PDF 转换器

delphi - 使用 Delphi 处理大图像并保存为 .jpeg

java - java中如何累加一个值?

java - 平滑 Android 游戏循环

c - 拆分我从文件中读取的字符串

java - 如何测试使用外部包与数据库交互的方法