问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java类 图片导入到excel 模糊 就是图片被盖上了一层红色

发布网友 发布时间:2022-04-23 15:30

我来回答

2个回答

热心网友 时间:2023-07-01 07:18

Java上传图片时,对某些图片进行缩放、裁剪或者生成缩略图时会蒙上一层红色,经过检查只要经过ImageIO.read()()方法读取后再保存,该图片便已经变成红图。因此,可以推测直接原因在于ImageIO.read()方法加载图片的过程存在问题。
public static BufferedImage getImages(byte[] data) throws IOException {
ByteArrayInputStream input = new ByteArrayInputStream(data);
return ImageIO.read(input);
}

经过查阅得知ImageIO.read()方法读取图片时可能存在不正确处理图片ICC信息的问题,ICC为JPEG图片格式中的一种头部信息,导致渲染图片前景色时蒙上一层红色。解决方案:
不再使用ImageIO.read()方法加载图片,而使用JDK中提供的Image src=Toolkit.getDefaultToolkit().getImage

Image src=Toolkit.getDefaultToolkit().getImage(file.getPath());
BufferedImage image=BufferedImageBuilder.toBufferedImage(src);//Image to BufferedImage

或者Toolkit.getDefaultToolkit().createImage
Image imageTookit = Toolkit.getDefaultToolkit().createImage(bytes);
BufferedImage cutImage = BufferedImageBuilder.toBufferedImage(imageTookit);

BufferedImageBuilder源码:
public static BufferedImage toBufferedImage(Image image) {
if (image instanceof BufferedImage) {
return (BufferedImage) image;
}
// This code ensures that all the pixels in the image are loaded
image = new ImageIcon(image).getImage();
BufferedImage bimage = null;
GraphicsEnvironment ge = GraphicsEnvironment
.getLocalGraphicsEnvironment();
try {
int transparency = Transparency.OPAQUE;
GraphicsDevice gs = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gs.getDefaultConfiguration();
bimage = gc.createCompatibleImage(image.getWidth(null),
image.getHeight(null), transparency);
} catch (HeadlessException e) {
// The system does not have a screen
}
if (bimage == null) {
// Create a buffered image using the default color model
int type = BufferedImage.TYPE_INT_RGB;
bimage = new BufferedImage(image.getWidth(null),
image.getHeight(null), type);
}
// Copy image to buffered image
Graphics g = bimage.createGraphics();
// Paint the image onto the buffered image
g.drawImage(image, 0, 0, null);
g.dispose();
return bimage;
}

热心网友 时间:2023-07-01 07:18

你不是设置了背景色吗?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
男人醉女人累原歌 我大概在2009年玩的很早的一款冒险动作游戏有一关是埃及狗头人主角捡武... 提成点数怎么算公式 Huamei/华美每日粗粮粗纤维饼-适用对象 0pp01107格式化后成白屏且不能开机怎么办 五邑大学是市属还是省属 五邑大学校区有几个 窝瓜焖荷包蛋怎么做? 达科塔·芬妮简要生平 湖北自动冷库多少钱 JAVA编程中用Apache POI 怎么用SXSSFWorkbook对已存在的excel(.xlsx)操作进行写数据操作 java如何获取excel表格中的单元格上图片的链接 java导入excel文件,内含图片,图片中有超链接,如何获取这个超链接? 用Java向Excel中导入图片出现的问题 你好。。高手。请教下你的Excel的格式没设置好,其实POI读取的时候,都是按照文本格式去读取的, 微信免密支付取消不掉,服务关闭不了,请求? 求解!JAVA 使用Apache POI将PPTX转图片出错。见下图 Java poi读取excel空格遍历 POI 读取Excel2007遇到问题,请高手指教,谢谢 java中怎么让导入的excle表中每一条数据对应文件夹中对应的图片 poi处理Excel数据,cell的getStringCellValue()获取的值为空,大侠帮帮忙 使用POI 将数据和图片导入到Excel中,图片的大小怎么设置,请各位帮帮忙。 苹果手机为什么晚上拍照有点模糊,背光拍照就很模糊,但是白天或者开闪光... poi读取Excel,之后生成另一个Excel 用poi怎么获得excel里的图片原来的名字 POI读取Excel异常 有关Java POI问题:从数据库读取word excel 或者是html文件,如何读取... Java使用POI读取excel怎么出现以下错误? 小龙虾在家怎么做好吃 怎么在家做麻辣小龙虾? 我想问下自考英语本科有哪些科目要考? 自学英语怎样考试,可以考什么证? 自考英语要怎么学? 我是如何学习自考英语的 自考英语有哪些学习方法? 什么是英语自考 商务英语自考(专科)考哪几科? 谁知道英语自考需要什么报考条件 自考英语该从哪里学起? 自考英语专业好考吗?要考哪些? 自考英语有什么要求? 自考英语二怎么学 自考英语学习的三个方法 自考英语有什么用?听说公共英语三级可以免考? 高等教育自学考试英文怎么写 纯电动汽车的缺点? 纯电动汽车好吗? 深圳市一级建造师考试地点在哪里? 纯电动汽车和非纯电动汽车的区别 新能源纯电动汽车好不好啊?