openjdk ImageIO.write()时出现Invalid argument to native writeImage

原文链接: https://www.cnblogs.com/shiyun32/p/15918613.html

问题:在本地开发时使用的是oracle jdk8,没有问题,但是生产上面使用的是openjdk-8u252-b09,生成图片时一直报Invalid argument to native writeImage

复制代码
复制代码
javax.imageio.IIOException: Invalid argument to native writeImage
at com.sun.imageio.plugins.jpeg.JPEGImageWriter.writeImage(Native Method)
at com.sun.imageio.plugins.jpeg.JPEGImageWriter.writeOnThread(JPEGImageWriter.java:1067)
at com.sun.imageio.plugins.jpeg.JPEGImageWriter.write(JPEGImageWriter.java:363)
at javax.imageio.ImageWriter.write(ImageWriter.java:615)
at javax.imageio.ImageIO.doWrite(ImageIO.java:1622)
at javax.imageio.ImageIO.write(ImageIO.java:1548)
复制代码
复制代码

代码(报错diam):

复制代码
复制代码
public String exportImg(List<Node> nodes, String piclocation, Font font){
        //1.jpg模板路径
        Resource resource = new ClassPathResource(piclocation);
        String path = "";
        String fileName = "";
        BufferedImage buffImg = null;
        InputStream inputStream = null;
        try {
            inputStream = resource.getInputStream();
            buffImg = ImageIO.read(inputStream);
            //得到画笔对象
            Graphics g = buffImg.getGraphics();
            //设置颜色。
            g.setColor(Color.BLACK);
            Graphics2D tip = buffImg.createGraphics();
            tip.setColor(Color.BLACK);
            font = new Font("宋体", Font.PLAIN, 14);
            tip.setFont(font);
            picDraw(nodes, tip);
            g.dispose();
            path = System.getProperty("java.io.tmpdir") + File.separator + File.separator;
            File file = new File(path);
            file.mkdirs();
            fileName = UUID.randomUUID() + ".jpg";
            ImageIO.write(buffImg, "jpg", new File(path + fileName));
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                //关闭流
                if (inputStream != null) {
                    inputStream.close();
                }
            } catch (Exception finalExcp) {
                return finalExcp.getMessage();
            }
        }

        return path + fileName;
    }
复制代码
复制代码

 

解决:

将上面红色的代码改为:

ImageIO.write(buffImg, "png", new File(path + fileName));
posted @   枫树湾河桥  阅读(2512)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-09-09 MyBatis-Plus 使用xml文件
Live2D
欢迎阅读『openjdk ImageIO.write()时出现Invalid argument to native writeImage』
点击右上角即可分享
微信分享提示
西雅图
14:14发布
西雅图
14:14发布
6°
多云
东北风
1级
空气质量
相对湿度
91%
今天
中雨
5°/9°
周三
3°/12°
周四
5°/10°