java保存图片问题,懂的请进。。。

陈志凯 2011-09-22 07:48:27
我想把一个Image对象保存在电脑里边(gif格式),且不改变源文件(即动态图保存后还是动态图)
这该怎么做呢?这项目,急死了。。。

下面是我找到的保存图片方法,但不知为何动态图保存后,变成静态了,汗,文件大小缩水了N倍,只是原动态图的一个截面(相当于剪切那种,晕死了)。。。

 
Image image3=image2.getImage();

BufferedImage bufImg = new BufferedImage(image3.getWidth(null), image3.getHeight(null), BufferedImage.TYPE_INT_RGB);
bufImg.getGraphics().drawImage(image3, 0, 0, null);
FileOutputStream fos;
try {
fos = new FileOutputStream( "D://javaChat/01.jpg");
com.sun.image.codec.jpeg.JPEGImageEncoder encoder = com.sun.image.codec.jpeg.JPEGCodec.createJPEGEncoder(fos);
encoder.encode(bufImg);
fos.close();
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();}
catch(Exception ett){
ett.printStackTrace();
}
...全文
218 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈志凯 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 x19881216 的回复:]
引用 8 楼 czk740960212 的回复:

引用 6 楼 x19881216 的回复:
Java code



ImageIO.write(b, "GIF", new FileOutputStream("c:\\a.gif"));


用這個方法寫入圖片,記得flush流


能否写完整它?它输入的基础对象是Image?

bufferedimage是ima……
[/Quote]


这我知道。。。能否写完整?
小绵羊 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 czk740960212 的回复:]

引用 6 楼 x19881216 的回复:
Java code



ImageIO.write(b, "GIF", new FileOutputStream("c:\\a.gif"));


用這個方法寫入圖片,記得flush流


能否写完整它?它输入的基础对象是Image?
[/Quote]
bufferedimage是image的子类
陈志凯 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wangquanzheng 的回复:]
用文件流写进去

看的时候在读出来
[/Quote]

求代码。。。要的不是文件路径而是Image对象?!
陈志凯 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 x19881216 的回复:]
Java code



ImageIO.write(b, "GIF", new FileOutputStream("c:\\a.gif"));


用這個方法寫入圖片,記得flush流
[/Quote]

能否写完整它?它输入的基础对象是Image?
安心逍遥 2011-09-23
  • 打赏
  • 举报
回复
用文件流写进去

看的时候在读出来
小绵羊 2011-09-23
  • 打赏
  • 举报
回复


ImageIO.write(b, "GIF", new FileOutputStream("c:\\a.gif"));

用這個方法寫入圖片,記得flush流
陈志凯 2011-09-23
  • 打赏
  • 举报
回复
顺便说下,这里边的Image是从JtextPane里边拿的:
doc = jtf_send2.getStyledDocument(); // 获得JTextPane的Document
Element e = doc.getCharacterElement(0);
Icon image = StyleConstants.getIcon(e.getAttributes());
ImageIcon image2 = (ImageIcon) image;
Image image3 = image2.getImage();


这会不会产生不良影响?
陈志凯 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 softroad 的回复:]
BufferedImage bufImg = new BufferedImage(image3.getWidth(null), image3.getHeight(null), BufferedImage.TYPE_INT_RGB);
bufImg.getGraphics().drawImage(image3, 0, 0, null);
ImageIO.write(bufImg, "GIF……
[/Quote]

这个方法无论对动态或者静态图片,都不能保存下来。。。文件都是空的
陈志凯 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 softroad 的回复:]
BufferedImage bufImg = new BufferedImage(image3.getWidth(null), image3.getHeight(null), BufferedImage.TYPE_INT_RGB);
bufImg.getGraphics().drawImage(image3, 0, 0, null);
ImageIO.write(bufImg, "GIF……
[/Quote]

测试了一阵,不行,保存的文件是0字节的,没有任何东西。。。。。。。
softroad 2011-09-23
  • 打赏
  • 举报
回复
FileImageInputStream, FileImageOutputStream,
softroad 2011-09-23
  • 打赏
  • 举报
回复
BufferedImage bufImg = new BufferedImage(image3.getWidth(null), image3.getHeight(null), BufferedImage.TYPE_INT_RGB);
bufImg.getGraphics().drawImage(image3, 0, 0, null);
ImageIO.write(bufImg, "GIF", new FileOutputStream("c:\\a.gif"));
陈志凯 2011-09-22
  • 打赏
  • 举报
回复
真诚等待中。。。。。。
陈志凯 2011-09-22
  • 打赏
  • 举报
回复
只要保存的对象是Image image,什么方法都行!
陈志凯 2011-09-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shine333 的回复:]
gif-->jpeg???
jpeg永远不可能
[/Quote]


呃呃呃,估计这是原因所在,那我应该怎么该才能保持源文件不变,,,什么格式也无所谓啦,只要能保存成功并且是完整无缺的。。。

这位大侠,帮帮忙啊
shine333 2011-09-22
  • 打赏
  • 举报
回复
gif-->jpeg???
jpeg永远不可能
陈志凯 2011-09-22
  • 打赏
  • 举报
回复
在线等待。。。急、急、急、急

51,408

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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