栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

在docker容器中读写图片出现“Invalid argument to native writeImage”异常

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在docker容器中读写图片出现“Invalid argument to native writeImage”异常

在docker容器中读写图片出现Invalid argument to native writeImage异常 异常出现环境:

在docker容器中部署的jar项目,在windows中测试ok,在linux系统的docker容器中,写图片时遇到的异常问题

原代码:

   
    private  String upload(String portraitURL){
        File file=null;
        try {
            String imageType = portraitURL.substring(portraitURL.lastIndexOf(".")+1);
            String filePath = System.getProperty("user.dir");
            String path= filePath+System.currentTimeMillis()+"."+imageType;
            log.info("图片地址: {}",path);
            BufferedImage read = ImageIO.read(new URL(portraitURL));
            file=new File(path);
            ImageIO.write(read,imageType,file);
            UploadResult image = client.uploadFile(path, "image");
            if (Optional.ofNullable(image).isPresent()) {
              return image.getMediaId();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (APIConnectionException e) {
            e.printStackTrace();
        } catch (APIRequestException e) {
            e.printStackTrace();
        }finally {
            //使用完毕删除创建临时文件
            Optional.ofNullable(file).ifPresent(item ->{
                if (item.exists()) {
                    try {
                        FileUtils.delete(item);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            });
        }
        throw new  RuntimeException("极光上传图片异常");
    }

问题解决

    
    private  String upload(String portraitURL){
        if (StringUtils.isBlank(portraitURL)) {
            portraitURL= SysUserConstants.DEFAULT_IMAGE;
        }

        File file=null;
        try {
            String imageType = portraitURL.substring(portraitURL.lastIndexOf(".")+1);
            String filePath = System.getProperty("user.dir");
            String path= filePath+System.currentTimeMillis()+"."+imageType;
            log.info("图片地址: {}",path);
            BufferedImage read = ImageIO.read(new URL(portraitURL));
            file=new File(path);


            //如果是jpg或者是jpeg,需要重画一下
            if (imageType.equalsIgnoreCase("jpg") || imageType.equalsIgnoreCase("jpeg")) { //重画一下,要么会变色
                BufferedImage tag;
                tag = new BufferedImage(read.getWidth(), read.getHeight(), BufferedImage.TYPE_INT_BGR);
                Graphics g = tag.getGraphics();
                g.drawImage(read, 0, 0, null); 
                g.dispose();
                read = tag;
            }
            ImageIO.write(read,imageType,file);
            UploadResult image = client.uploadFile(path, "image");
            if (Optional.ofNullable(image).isPresent()) {
              return image.getMediaId();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (APIConnectionException e) {
            e.printStackTrace();
        } catch (APIRequestException e) {
            e.printStackTrace();
        }finally {
            //使用完毕删除创建临时文件
            Optional.ofNullable(file).ifPresent(item ->{
                if (item.exists()) {
                    try {
                        FileUtils.delete(item);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            });
        }
        throw new  RuntimeException("极光上传图片异常");
    }


总结

此处为解决问题核心代码,重画图片

   //如果是jpg或者是jpeg,需要重画一下
  if (imageType.equalsIgnoreCase("jpg") || imageType.equalsIgnoreCase("jpeg")) { //重画一下
   BufferedImage tag;
   tag = new BufferedImage(read.getWidth(), read.getHeight(), BufferedImage.TYPE_INT_BGR);
   Graphics g = tag.getGraphics();
   g.drawImage(read, 0, 0, null); // 绘制缩小后的图
   g.dispose();
   read = tag;
  }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/338746.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号