ImageIO读取图片出现一层红色背景解决方案

问题展示:
在excel中插入图片,图片上像是铺了一层红色薄膜一样,效果如下图!

代码如下:

    /*** * @param workbook* @param sheet sheet对象* @param file  文件* @param row 起始行* @param col 起始列* @param rows  结束行* @param cols  结束列* @version*/public static void picture3(XSSFWorkbook workbook, XSSFSheet sheet, File file, int row, int col, int rows, int cols){XSSFDrawing patriarch = sheet.createDrawingPatriarch();BufferedImage bufferImg;try {ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();//ImageIO.read()读取图片会出现一层红色的背景bufferImg = ImageIO.read(new FileInputStream(file));ImageIO.write(bufferImg, "JPEG", byteArrayOut);bufferImg.flush();byteArrayOut.flush();XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0,( short ) col, row, ( short ) cols, rows);patriarch.createPicture(anchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));byteArrayOut.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}

解决方案:

用如下代码替换 bufferImg = ImageIO.read(new FileInputStream(file));

 // 处理读取图片出现一层红色的背景ImageIcon src = new ImageIcon(file.getAbsolutePath());bufferImg = new BufferedImage(src.getIconWidth(),src.getIconHeight(), BufferedImage.TYPE_INT_RGB);Graphics g = bufferImg.createGraphics();g.setColor(Color.white);g.fillRect(0, 0, src.getIconWidth(), src.getIconHeight());g.drawImage(src.getImage(), 0, 0, null);g.dispose();

完整代码:

    /**** @param workbook* @param sheet sheet对象* @param file  文件* @param row 起始行* @param col 起始列* @param rows  结束行* @param cols  结束列* @version*/public static void picture3(XSSFWorkbook workbook, XSSFSheet sheet, File file, int row, int col, int rows, int cols){XSSFDrawing patriarch = sheet.createDrawingPatriarch();BufferedImage bufferImg;try {ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();//ImageIO.read()读取图片会出现一层红色的背景
//          bufferImg = ImageIO.read(new FileInputStream(file));/*处理读取图片出现一层红色的背景-开始*/ImageIcon src = new ImageIcon(file.getAbsolutePath());bufferImg = new BufferedImage(src.getIconWidth(),src.getIconHeight(), BufferedImage.TYPE_INT_RGB);Graphics g = bufferImg.createGraphics();g.setColor(Color.white);g.fillRect(0, 0, src.getIconWidth(), src.getIconHeight());g.drawImage(src.getImage(), 0, 0, null);g.dispose();/*处理读取图片出现一层红色的背景-结束*/ImageIO.write(bufferImg, "JPEG", byteArrayOut);bufferImg.flush();byteArrayOut.flush();XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0,( short ) col, row, ( short ) cols, rows);patriarch.createPicture(anchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));byteArrayOut.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}

效果如下:

ImageIO读取图片出现一层红色背景解决方案相关推荐

  1. ImageIo读取图片出现一层红色的背景

    在使用ImageIO.read()方法读取图片时,读取出来的图片如下图所示: 原图如下: 明显出现了一层红色的罩子,这个是Java读取图片时的一个bug. 对此,可以使用如下的方式解决: File s ...

  2. java上传png_java上传png图片出现红色背景

    java图片上传出现红色背景 java图片服务器上传图片都很正常,唯独上传png图片时,png图片变成红色背景 原因是读取上传数据时用的是ImageIO.read(inputstream)方法 pub ...

  3. ImageIO javax.imageio;读取图片问题

    今天在做二维码的时候,要在二维码中心放置一个logo图标,当时用ImageIO读取的时候始终为空.最后发现是图片格式问题. 整个class代码,utils: package com.allk.util ...

  4. 使用javax.imageio.ImageIO读取JPEG图片时出现异常java.awt.color.CMMException: General CMM error517

    目录 问题描述 背景 异常 解决 重现 紧急处理 解决方法 第一种:变更JDK版本 第二种:去掉引入的twelvemonkeys图片读取插件 问题描述 背景 由于业务需要,生产环境需要将用户上传的图片 ...

  5. java上传图片出现红色背景的问题

    java上传图片出现红色背景的问题 最近发现上传图片时有的图片可以正常上传,有的上传后颜色却变了,好像失真了一样,刚开始以为图片太大了,考虑压缩后再上传,不过发现并没有用,折腾了半天,发现是图片的位深 ...

  6. PHP——PHP读取MySQL数据库中文乱码解决方案

    问题描述 PHP读取MySQL数据库中文乱码 解决方案 静态页面  <head> <metahttp-equiv="Content-Type"content=&q ...

  7. c#取消word修订痕迹_C# 设置、删除、读取Word文档背景——基于Spire.Cloud.Word

    Spire.Cloud.Word.Sdk提供了接口SetBackgroudColor().SetBackgroudImage().DeleteBackground().GetBackgroudColo ...

  8. ImageIO 读取图片

    ImageIO提供了直接读取图片到内存的方式,同样,我们可以使用ImageReader读取文件到内存中进行使用:我们对两种方式进行介绍. ImageReader读取 // 创建随机访问文件对象 Ran ...

  9. UnityWebRequest 下载服务器图片显示红色问号解决方案

    unity版本:2019.4.31f1c1 问题描述:使用UnityWebRequest下载服务器图片放到UI上,图片不显示,显示一个红色的问号. 如图: 问号是一个8X8的图,unity自带的图片, ...

最新文章

  1. Mac OS X 10.8.5 安装编译glib
  2. Java---先设计一个Moveable可移动接口,然后分别设计 3 个类,即汽车Car、轮船Ship、飞机Aircraft来实现该接口,最后设计一个应用程序来使用它们。
  3. MATLAB - 为什么imshow(g,[])可以正常显示,而imshow(g)却显示空白图像?
  4. linux加密解密基础、PKI及SSL、创建私有CA
  5. python argv参数
  6. 企业数字化转型与SAP云平台
  7. Phython—实训day5—爬虫相关知识
  8. 【转】ArcGIS.Server.9.2.DotNet的ADF的Toolbar工作过程分析
  9. OpenGL学习笔记:画点、直线和多边形(第一讲)
  10. PHP更新小程序,微信小程序Tab页切换更新数据详细介绍
  11. matlab计算惯性矩,动力总成主惯性矩计算及扭矩轴(TRA)位置确定
  12. postman tests实例记录,常用测试结果验证及使用技巧
  13. 复合文档格式(一)- Excel XLS文件格式
  14. ndk编译 toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe
  15. python求特征值以及特征向量,并且输出最小特征值对应的特征向量
  16. HNU数据结构哈夫曼树建立
  17. 【Linux】【编译相关】execvp: /bin/sh: Argument list too long问题处理小结
  18. js的数据类型和强制类型转换
  19. Javascript常用的一些数据结构与算法
  20. 重聚京都 找不到服务器,阴阳师重聚京都活动怎样玩 重聚京都活动玩法攻略

热门文章

  1. python实现xmind_用Python解析XMind
  2. 基于python3 pyppeteer的漫画爬虫及下载项目PiaoManga
  3. CentOS Linux下安装MySQL的几种方式
  4. a标签打开新页面sessionStorage丢失
  5. 惠普HP Color Inkjet 1000 打印机驱动
  6. 体检管理系统——图形报表ECharts
  7. JVM参数调优总结 -Xms -Xmx -Xmn -Xss
  8. C++ 面向对象经典练习魔兽世界装备
  9. Java网络编程入门(二)之客户端与服务器端编程步骤详解
  10. .net coreMySql连接字符串