| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 733 人关注过本帖
标题:关于ImageIO的讨论
只看楼主 加入收藏
netstriker
Rank: 1
等 级:新手上路
威 望:1
帖 子:257
专家分:0
注 册:2007-3-24
收藏
 问题点数:0 回复次数:4 
关于ImageIO的讨论
现在我经过一些图像处理后就得到一个 Image类的对象,请问有没有办法把这个Image 的对象输出为一个File类的一个文件对象呢?
    也就是说有没有办法可以把一个Image类对象转为一个存在电脑里的一个 .jpg文件呢?
   谢谢
搜索更多相关主题的帖子: ImageIO 
2007-12-20 15:29
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
可以,用ImageIO的
static boolean     write(RenderedImage im, String formatName, File output)
方法.
如果你的Image是个BufferedImage,可以直接使用上面的方法,
否则先
bi =new BufferedImage(w,h,....);
然后
Graphics g =bi.getGraphics();
最后
g.drawImage(image,0,0,w,h,null);
再对这个bi调用ImageIO的write方法

My BlogClick Me
2007-12-20 15:39
netstriker
Rank: 1
等 级:新手上路
威 望:1
帖 子:257
专家分:0
注 册:2007-3-24
收藏
得分:0 
楼上正解........
   我自己也写了一个,
  
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.image.FilteredImageSource;
import java.awt.image.ReplicateScaleFilter;
import
import

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import javax.swing.*;
public class ScaleImage{
    String name;
    public ScaleImage(String fullPathName)
    {
        this.name = fullPathName;
        Toolkit tk = Toolkit.getDefaultToolkit();
        Image image = tk.getImage(this.name);
        try{
            ReplicateScaleFilter rsf = new ReplicateScaleFilter(100,100);
            FilteredImageSource fis = new FilteredImageSource(image.getSource(),rsf);
            MediaTracker mt = new MediaTracker(new JFrame());
            
            final Image tempImage = tk.createImage(fis);
            mt.addImage(tempImage, 0);
            mt.waitForID(0);
            int width = tempImage.getWidth(null);
            int height = tempImage.getHeight(null);
            
            BufferedImage bi = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
            bi.getGraphics().drawImage(tempImage, 0, 0, width,height,null);
            
            FileOutputStream fos = new FileOutputStream(new File(this.name));
            JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(fos);
            jpeg.encode(bi);
            
            fos.close();
            
        }catch(Exception e)
        {
            System.out.println("error");
        }
        
    }
    public static void main(String args[])
    {
        new ScaleImage("D:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\Online\\uploadFiles\\2.jpg");   //就是图片的路径,处理完后会覆盖原来的图片
    }
}
2007-12-20 17:27
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
最好不要用
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
里面的东西
这些属于sun的JDK私有的API,在其它公司的JDK上不一定能运行

My BlogClick Me
2007-12-20 22:31
netstriker
Rank: 1
等 级:新手上路
威 望:1
帖 子:257
专家分:0
注 册:2007-3-24
收藏
得分:0 
学习了,那么想问一下,那些sun自己的类啊,怎样才有它的API说明文档呢?
2007-12-21 12:36
快速回复:关于ImageIO的讨论
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020155 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved