关于ImageIO的讨论
现在我经过一些图像处理后就得到一个 Image类的对象,请问有没有办法把这个Image 的对象输出为一个File类的一个文件对象呢?也就是说有没有办法可以把一个Image类对象转为一个存在电脑里的一个 .jpg文件呢?
谢谢
搜索更多相关的解决方案:
ImageIO
----------------解决方案--------------------------------------------------------
可以,用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方法
----------------解决方案--------------------------------------------------------
楼上正解........
我自己也写了一个,
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 java.io.File;
import java.io.FileOutputStream;
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"); //就是图片的路径,处理完后会覆盖原来的图片
}
}
----------------解决方案--------------------------------------------------------
最好不要用
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
里面的东西
这些属于sun的JDK私有的API,在其它公司的JDK上不一定能运行
----------------解决方案--------------------------------------------------------
学习了,那么想问一下,那些sun自己的类啊,怎样才有它的API说明文档呢?
----------------解决方案--------------------------------------------------------