ImageIO.write 写入gif 图片 报错 图片黑屏不会动

sinat_19250161 2017-09-05 11:56:59
	
// String path = PropertityUtils.getValue("picPath")+imagePath;
String path = "E:/a.gif";
File srcFile = new File(path);

if(srcFile.exists()){

try {
BufferedImage srcImg = ImageIO.read(srcFile);
BufferedImage buffImg = null;
buffImg = new BufferedImage(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
java.awt.Image image =Toolkit.getDefaultToolkit().createImage( TestImageBinary.class.getResource(path));
buffImg.getGraphics().drawImage(image, 0,0, null);

// buffImg.getGraphics().drawImage(
// srcImg.getScaledInstance(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.SCALE_SMOOTH), 0,
// 0, null);

buffImg.getGraphics().dispose();
ImageIO.write(buffImg, "JPEG", response.getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}


以上是我的代码
报错信息

Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:116)
at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:126)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:263)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:205)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:169)
DEBUG[com.frontdo.travel.interceptor.AuthInterceptor]-信息:request /travel/action/acquireUploadImage,prcess time :244ms
DEBUG[org.mybatis.spring.SqlSessionUtils]-信息:Creating a new SqlSession

页面显示
黑屏 只有个宽高
...全文
677 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
天涯若风 2017-09-05
  • 打赏
  • 举报
回复
是不是 没有正常初始化对象,导致空指针的。
sinat_19250161 2017-09-05
  • 打赏
  • 举报
回复
快来个大神 帮帮忙
sinat_19250161 2017-09-05
  • 打赏
  • 举报
回复
页面就这个样子
sinat_19250161 2017-09-05
  • 打赏
  • 举报
回复
引用 13 楼 pany1209 的回复:
为什么不使用img标签显示就好了???
接口 给手机端用的
李德胜1995 2017-09-05
  • 打赏
  • 举报
回复
为什么不使用img标签显示就好了???
sinat_19250161 2017-09-05
  • 打赏
  • 举报
回复
引用 10 楼 JJYYyibanhua 的回复:
[quote=引用 9 楼 sinat_19250161 的回复:] [quote=引用 8 楼 JJYYyibanhua 的回复:] [quote=引用 7 楼 sinat_19250161 的回复:] [quote=引用 6 楼 JJYYyibanhua 的回复:] 看报错,创建img失败了。 先用字节流读取下,再调用下边 Image image = Toolkit.getDefaultToolkit.createImage(byte[] args) ImageIcon imgIcon = new ImageIcon(image)
这样编译不通过[/quote] 怎么会编译不通过,报的什么错?ImageIcon这里?[/quote] 通过了 又出新错误了 java.lang.OutOfMemoryError: Java heap space BufferedImage srcImg = ImageIO.read(srcFile); BufferedImage buffImg = null; buffImg = new BufferedImage(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB); FileInputStream inStream = new FileInputStream(srcFile); byte[] inOutb = new byte[inStream.available()]; java.awt.Image image =Toolkit.getDefaultToolkit().createImage(inOutb); ImageIcon imgIcon = new ImageIcon(image); buffImg.getGraphics().drawImage(image, 0,0, null); // buffImg.getGraphics().drawImage( // srcImg.getScaledInstance(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.SCALE_SMOOTH), 0, // 0, null); buffImg.getGraphics().dispose(); ImageIO.write(buffImg, "JPEG", response.getOutputStream());[/quote] 内存溢出。。。java 堆内存溢出了。。。 重启再试下 这是设置的有多大。。。[/quote] 现在不报错了 但还是 黑屏
sinat_19250161 2017-09-05
  • 打赏
  • 举报
回复
引用 10 楼 JJYYyibanhua 的回复:
[quote=引用 9 楼 sinat_19250161 的回复:] [quote=引用 8 楼 JJYYyibanhua 的回复:] [quote=引用 7 楼 sinat_19250161 的回复:] [quote=引用 6 楼 JJYYyibanhua 的回复:] 看报错,创建img失败了。 先用字节流读取下,再调用下边 Image image = Toolkit.getDefaultToolkit.createImage(byte[] args) ImageIcon imgIcon = new ImageIcon(image)
这样编译不通过[/quote] 怎么会编译不通过,报的什么错?ImageIcon这里?[/quote] 通过了 又出新错误了 java.lang.OutOfMemoryError: Java heap space BufferedImage srcImg = ImageIO.read(srcFile); BufferedImage buffImg = null; buffImg = new BufferedImage(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB); FileInputStream inStream = new FileInputStream(srcFile); byte[] inOutb = new byte[inStream.available()]; java.awt.Image image =Toolkit.getDefaultToolkit().createImage(inOutb); ImageIcon imgIcon = new ImageIcon(image); buffImg.getGraphics().drawImage(image, 0,0, null); // buffImg.getGraphics().drawImage( // srcImg.getScaledInstance(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.SCALE_SMOOTH), 0, // 0, null); buffImg.getGraphics().dispose(); ImageIO.write(buffImg, "JPEG", response.getOutputStream());[/quote] 内存溢出。。。java 堆内存溢出了。。。 重启再试下 这是设置的有多大。。。[/quote] 重启了 也没用 byte[] inOutb = new byte[inStream.available()]; 这里报错
kobe8free 2017-09-05
  • 打赏
  • 举报
回复
引用 9 楼 sinat_19250161 的回复:
[quote=引用 8 楼 JJYYyibanhua 的回复:] [quote=引用 7 楼 sinat_19250161 的回复:] [quote=引用 6 楼 JJYYyibanhua 的回复:] 看报错,创建img失败了。 先用字节流读取下,再调用下边 Image image = Toolkit.getDefaultToolkit.createImage(byte[] args) ImageIcon imgIcon = new ImageIcon(image)
这样编译不通过[/quote] 怎么会编译不通过,报的什么错?ImageIcon这里?[/quote] 通过了 又出新错误了 java.lang.OutOfMemoryError: Java heap space BufferedImage srcImg = ImageIO.read(srcFile); BufferedImage buffImg = null; buffImg = new BufferedImage(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB); FileInputStream inStream = new FileInputStream(srcFile); byte[] inOutb = new byte[inStream.available()]; java.awt.Image image =Toolkit.getDefaultToolkit().createImage(inOutb); ImageIcon imgIcon = new ImageIcon(image); buffImg.getGraphics().drawImage(image, 0,0, null); // buffImg.getGraphics().drawImage( // srcImg.getScaledInstance(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.SCALE_SMOOTH), 0, // 0, null); buffImg.getGraphics().dispose(); ImageIO.write(buffImg, "JPEG", response.getOutputStream());[/quote] 内存溢出。。。java 堆内存溢出了。。。 重启再试下 这是设置的有多大。。。
sinat_19250161 2017-09-05
  • 打赏
  • 举报
回复
引用 8 楼 JJYYyibanhua 的回复:
[quote=引用 7 楼 sinat_19250161 的回复:] [quote=引用 6 楼 JJYYyibanhua 的回复:] 看报错,创建img失败了。 先用字节流读取下,再调用下边 Image image = Toolkit.getDefaultToolkit.createImage(byte[] args) ImageIcon imgIcon = new ImageIcon(image)
这样编译不通过[/quote] 怎么会编译不通过,报的什么错?ImageIcon这里?[/quote] 通过了 又出新错误了 java.lang.OutOfMemoryError: Java heap space BufferedImage srcImg = ImageIO.read(srcFile); BufferedImage buffImg = null; buffImg = new BufferedImage(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB); FileInputStream inStream = new FileInputStream(srcFile); byte[] inOutb = new byte[inStream.available()]; java.awt.Image image =Toolkit.getDefaultToolkit().createImage(inOutb); ImageIcon imgIcon = new ImageIcon(image); buffImg.getGraphics().drawImage(image, 0,0, null); // buffImg.getGraphics().drawImage( // srcImg.getScaledInstance(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.SCALE_SMOOTH), 0, // 0, null); buffImg.getGraphics().dispose(); ImageIO.write(buffImg, "JPEG", response.getOutputStream());
kobe8free 2017-09-05
  • 打赏
  • 举报
回复
引用 7 楼 sinat_19250161 的回复:
[quote=引用 6 楼 JJYYyibanhua 的回复:] 看报错,创建img失败了。 先用字节流读取下,再调用下边 Image image = Toolkit.getDefaultToolkit.createImage(byte[] args) ImageIcon imgIcon = new ImageIcon(image)
这样编译不通过[/quote] 怎么会编译不通过,报的什么错?ImageIcon这里?
sinat_19250161 2017-09-05
  • 打赏
  • 举报
回复
引用 6 楼 JJYYyibanhua 的回复:
看报错,创建img失败了。 先用字节流读取下,再调用下边 Image image = Toolkit.getDefaultToolkit.createImage(byte[] args) ImageIcon imgIcon = new ImageIcon(image)
这样编译不通过
kobe8free 2017-09-05
  • 打赏
  • 举报
回复
看报错,创建img失败了。 先用字节流读取下,再调用下边 Image image = Toolkit.getDefaultToolkit.createImage(byte[] args) ImageIcon imgIcon = new ImageIcon(image)
WonHyo 2017-09-05
  • 打赏
  • 举报
回复
用FileInputStream吧,管它是文本还是图片,都可以还原,
sinat_19250161 2017-09-05
  • 打赏
  • 举报
回复
引用 3 楼 q54244125 的回复:
是不是 没有正常初始化对象,导致空指针的。
你指的是哪个?

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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