使用ImageIO.read读取JPG文件时,显示出来的图片会变黑?

lyan99 2009-10-29 01:35:44
最近在搞JAVA图片,遇到个很郁闷的问题,当读取图片文件时,用ImageIO.read(new File(imagePath)),结果一部分扫描的JPG文件读入后,都变黑了,就像下面的图那样


原图片 尺寸:2481*3509 大小:1.75M

但是我自己弄了几张 更大的图,都没有这个问题,不知道应该如何解决?是不是扫描出来的图片格式问题?

希望有高手来指点一下 谢谢!
...全文
1925 10 打赏 收藏 转发到动态 举报
写回复
用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格式应该没问题

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧