我从系统剪切板里面获得了一张图片的Image对象,现在想把它保存为一个图像文件(jpg,bmp,gif....任何一种都行)
请问这个代码可以怎么写?????

解决方案 »

  1.   

    javax.imageio.ImageIO.write(RenderedImage im, String formatName, File output) 
    用这个方法..
      

  2.   

    给你一个生成gif图的方法,用字节流输出image
     
    ByteArrayOutputStream out1 = new ByteArrayOutputStream();
    saveImage(img, Color.WHITE, out1);
    bytes = out1.toByteArray();
    out1.close();
    FileOutputStream out2 = new FileOutputStream(outFile);
    out2.write(bytes);
    out2.close();
       private static void saveImage(BufferedImage img, Color transparent,
                OutputStream out1) throws Exception {
            GifEncoder encoder = new GifEncoder(img, out1, true);
            BufferedImage bi = new BufferedImage(img.getWidth(), img.getHeight(),
                    BufferedImage.TYPE_BYTE_INDEXED);
            encoder.setColorModel(bi.getColorModel());
            encoder.encode();
        }用的是这个包,Acme.JPM.Encoders.GifEncoder
      

  3.   


    package com.dingxie.test;import java.awt.Toolkit;
    import java.awt.datatransfer.Clipboard;
    import java.awt.datatransfer.DataFlavor;
    import java.awt.datatransfer.UnsupportedFlavorException;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;import javax.imageio.ImageIO;
    public class Clipboardtest { Clipboard clip = new Clipboard("");
    public static void main(String[] args){
    Clipboard c = new Clipboard("my");
    Toolkit tool = Toolkit.getDefaultToolkit();
    //取得系统剪贴板
    c = tool.getSystemClipboard();
    try {
    //读出剪贴板内的图片(若不是图片将抛出异常UnsupportedFlavorException)
    BufferedImage i = (BufferedImage)c.getData(DataFlavor.imageFlavor);
    //将之保存
    ImageIO.write(i, "jpg", new File("D:/temp.jpg"));
    } catch (UnsupportedFlavorException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    简单实现.具体判定.保存路径和保存方式自行添加.
      

  4.   

    多了两行,前两个Clipboard 定义删除掉或合并
      

  5.   

    一片是获取JPG图片的方法,希望对你有用:
    注:tempImage是一个图像对像
    private void saveImage() {
    fileChooser = new JFileChooser();
    try {
    int saved = fileChooser.showSaveDialog(null);
    if (saved == JFileChooser.APPROVE_OPTION) {
    //获取要设置的文件名(包括路径)
    File saveFileName = fileChooser.getSelectedFile();
    //获取要保存文件的名字
    String fileName = new String(saveFileName.getPath()
    + ".jpg");
    //1.首先创建一个输出流(从内存输出到硬盘)
    FileOutputStream fileOutPut = new FileOutputStream(fileName);
    //2.然后把输出流用JPEG编码器进行包裹,其实就是把输出流连接到编码器
    encoder = JPEGCodec.createJPEGEncoder(fileOutPut);
    //把BufferedImage对象进行编码(有默认的保存路径)
    encoder.encode((BufferedImage) tempImage);
    fileOutPut.flush();
    fileOutPut.close();
    }
    } catch (Exception e) {
    e.printStackTrace();
    } }
      

  6.   

    谢谢,楼上的各位,我后来没存到文件,所以,没有试验,不过感觉都还行
    就是有点担心  ImageIO.write(BufferImage..),我传的是一个Image不知道是否可行