社区
Java SE
帖子详情
使用ImageIO.read读取JPG文件时,显示出来的图片会变黑?
lyan99
2009-10-29 01:35:44
最近在搞JAVA图片,遇到个很郁闷的问题,当读取图片文件时,用ImageIO.read(new File(imagePath)),结果一部分扫描的JPG文件读入后,都变黑了,就像下面的图那样
原图片 尺寸:2481*3509 大小:1.75M
但是我自己弄了几张 更大的图,都没有这个问题,不知道应该如何解决?是不是扫描出来的图片格式问题?
希望有高手来指点一下 谢谢!
...全文
2198
10
打赏
收藏
使用ImageIO.read读取JPG文件时,显示出来的图片会变黑?
最近在搞JAVA图片,遇到个很郁闷的问题,当读取图片文件时,用ImageIO.read(new File(imagePath)),结果一部分扫描的JPG文件读入后,都变黑了,就像下面的图那样 原图片 尺寸:2481*3509 大小:1.75M 但是我自己弄了几张 更大的图,都没有这个问题,不知道应该如何解决?是不是扫描出来的图片格式问题? 希望有高手来指点一下 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lyan99
2009-10-30
打赏
举报
回复
[Quote=引用 6 楼 littlemonster 的回复:]
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
public class LoadAndSave {
public static void main(String[] args) throws IOException {
String path = "images/cougar.jpg";
BufferedImage image = ImageIO.read(new File(path));
int w = image.getWidth();
int h = image.getHeight();
BufferedImage toStore = new BufferedImage(h, w, image.getType());
Graphics2D g2 = toStore.createGraphics();
double x = (h - w)/2.0;
double y = (w - h)/2.0;
AffineTransform at = AffineTransform.getTranslateInstance(x, y);
at.rotate(Math.toRadians(90), w/2.0, h/2.0);
g2.drawRenderedImage(image, at);
g2.dispose();
ImageIO.write(toStore, "BMP", new File("loadAndSave.bmp"));
}
}
[/Quote]
6楼兄弟的方法确实是可以的,但是放到我项目中就不行了。。。。难道是我项目中用到的皮肤包的问题?
结贴了 ,感谢各位啊~
lz12366007
2009-10-29
打赏
举报
回复
[Quote=引用 8 楼 lyan99 的回复:]
我把原图片用WINDOWS画图工具打开,可以正常显示,然后另存为GIF格式,用程序读入后就能显示正常的颜色。。。。
但是如果另存为JPG格式,程序读入后还是黑的
然后把那张GIF的另存为JPG,就可以正常显示...
我估计会不会是扫描件的JPG格式图片 是经过特别压缩的,然后JAVA去读的时候,像素点的颜色都和空图片时的黑色相加,导致变黑?
[/Quote]
我也正想告诉下lz呢
有事jpg格式的图片不是那么标准!!
所以读取会出错!!
试试吧!!
lyan99
2009-10-29
打赏
举报
回复
我把原图片用WINDOWS画图工具打开,可以正常显示,然后另存为GIF格式,用程序读入后就能显示正常的颜色。。。。
但是如果另存为JPG格式,程序读入后还是黑的
然后把那张GIF的另存为JPG,就可以正常显示...
我估计会不会是扫描件的JPG格式图片 是经过特别压缩的,然后JAVA去读的时候,像素点的颜色都和空图片时的黑色相加,导致变黑?
Agile牧
2009-10-29
打赏
举报
回复
[Quote=引用 4 楼 bayougeng 的回复:]
你确定原图片是好的,用java读完就变黑了么?
没这个道理啊
[/Quote]
up
littlemonster
2009-10-29
打赏
举报
回复
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
public class LoadAndSave {
public static void main(String[] args) throws IOException {
String path = "images/cougar.jpg";
BufferedImage image = ImageIO.read(new File(path));
int w = image.getWidth();
int h = image.getHeight();
BufferedImage toStore = new BufferedImage(h, w, image.getType());
Graphics2D g2 = toStore.createGraphics();
double x = (h - w)/2.0;
double y = (w - h)/2.0;
AffineTransform at = AffineTransform.getTranslateInstance(x, y);
at.rotate(Math.toRadians(90), w/2.0, h/2.0);
g2.drawRenderedImage(image, at);
g2.dispose();
ImageIO.write(toStore, "BMP", new File("loadAndSave.bmp"));
}
}
config_man
2009-10-29
打赏
举报
回复
设置一下关于颜色之类的属性看看...
bayougeng
2009-10-29
打赏
举报
回复
你确定原图片是好的,用java读完就变黑了么?
没这个道理啊
jacky68147527
2009-10-29
打赏
举报
回复
Ding
xiaozejun
2009-10-29
打赏
举报
回复
格式应该是不存在的问题
要不你在扫描入图片后 对图片的一些属性进行一下设置
看行不???
swandragon
2009-10-29
打赏
举报
回复
是不是扫描出来的图片格式问题?
jpg格式应该没问题
Java后端Base64
图片
压缩实战:BufferedImage与
ImageIO
应用详解
在Web开发中,
图片
处理是常见的性能优化点,尤其涉及网络传输与存储
时
。其核心原理在于对图像数据进行编码、解码与重采样。Base64编码将二进制
图片
转换为文本字符串,便于在JSON等文本协议中传输,但
会
增大数据体积。通过Java标准库的BufferedImage与
ImageIO
技术,可以在后端对
图片
进行高效解码、尺寸缩放与质量调整,实现显著的“瘦身”效果。这项技术的价值在于减少服务器带宽消耗、降低数据库存储压力并提升前端渲染速度。典型的应用场景包括用户头像上传、社区内容
图片
优化以及商品详情图适配。本文聚焦于使
Java后端
图片
处理实战:从Thumbnailator库
使用
到高并发服务优化
数字图像处理是后端开发中的常见需求,其核心在于理解
图片
的编码原理与色彩空间。
图片
格式如JPEG、PNG、WebP等,通过不同的压缩算法在画质与体积间取得平衡,而sRGB等色彩空间则决定了颜色的准确呈现。掌握这些原理,对于构建稳定高效的
图片
服务至关重要,能够避免常见的模糊、色彩失真等问题。在Java生态中,Thumbnailator库以其简洁的API和良好的默认处理,成为实现缩放、裁剪、水印等操作的利器。特别是在用户头像生成、内容管理系统等应用场景中,结合异步处理与缓存策略,可以显著提升高并发下的服务性能与稳
Java
图片
处理实战:从BufferedImage到Thumbnailator,掌握核心操作与性能优化
在软件开发中,图像处理是一项基础且高频的需求,涉及
图片
的
读取
、缩放、裁剪、合并与添加水印等核心操作。其原理通常围绕内存中的像素数据操作与图形上下文渲染展开。Java凭借其稳定的JVM、强大的标准库和成熟的生态,在企业级应用中处理这类任务具有独特的工程价值,尤其适合需要高可靠性、跨平台部署以及批量处理的场景,例如电商平台的商品图处理、内容管理系统或报表生成。通过深入理解`BufferedImage`和`Graphics2D`等JDK原生类的运作机制,开发者能够进行精细化的像素级控制;而借助`Thumbnail
Java图像处理实战:构建高并发场景下的生产级水印服务
图像处理是计算机视觉与多媒体技术的基础领域,其核心原理涉及像素操作、图形渲染与色彩空间转换。在Java生态中,通过Graphics2D等底层API进行图像合成,能够实现精细化的像素级控制,这对于数字资产的确权与版权保护具有重要技术价值。在实际应用场景中,如用户生成内容平台与电商系统,常需为
图片
添加文字或Logo水印以防止盗用。本文聚焦于高并发场景下的性能优化与内存管理,深入探讨了如何通过BufferedImage类型选择、对象复用及抗锯齿处理等细节,构建一个健壮、可配置的生产级水印服务解决方案。
Python图像处理三大库底层差异与跨库避坑指南
图像处理在计算机视觉中是基础但极易出错的环节,其核心挑战源于不同库对‘图像’这一概念的抽象差异:OpenCV视图像为内存缓冲区,PIL视其为带语义的画布对象,scikit-image则将其视为科学计算数组。这种设计哲学差异直接导致通道顺序(如BGR/RGB)、数据类型(uint8/float64)、内存布局(C/F-contiguous)和色彩空间假设不一致,进而引发
显示
偏色、alpha丢失、滤波全黑等高频故障。理解这些底层机制,是实现稳定读图、安全转换与可靠
显示
的前提。本文聚焦Python生态中OpenC
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章