回复两个朋友的图片裁剪问题

回复两个朋友的图片裁剪问题
([email protected]  转载请注明出处 作者:zhyiwww )
最近,有两个朋友在问我关于图片裁剪的问题,不过以前的代码找不到了,所以,就把完整的例子又整理了一下。可以实现在一个完整的图片上,根据需要,定位想要截取的图片的左上角的坐标和图片的大小,就可以取得该图片。
完整的实现代码如下:
package org.zy.app;

import java.io.File;
import java.io.InputStream;
import java.io.IOException;
import java.util.Iterator;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import javax.imageio.ImageReader;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageInputStream;

/**
 * @author zhangyi
 * date : 2007-10-18
 */
public class SplitImage {

    /**
     * ��ȡͼ���ļ� �� ImageReader
     *
     * @param imgPath
     * @throws IOException
     */

    public void readImage() throws IOException {
        // get JPEG image reader iterator
        Iterator readers = ImageIO.getImageReadersByFormatName("jpg");
        System.out.println(readers);
       
        // get image reader
        ImageReader reader = (ImageReader) readers.next();
        System.out.println(reader);

        // get original image input stream
        InputStream source = this.getClass().getResourceAsStream("img01.jpg");
        System.out.println("image input source is : " + source);
       
        // get ImageInputStream of the image to split
        ImageInputStream iis = ImageIO.createImageInputStream(source);
        reader.setInput(iis, true);
       
        // the image param
        ImageReadParam param = reader.getDefaultReadParam();
        int imageIndex = 0;
//       
//        int half_width = reader.getWidth(imageIndex) / 2;
//        int half_height = reader.getHeight(imageIndex) / 2;

        // the coordinate and the size on the image that you want to split on
        Rectangle rect = new Rectangle(300, 490, 200, 100);
        param.setSourceRegion(rect);
       
        BufferedImage bi = reader.read(0, param);
       
        // write the split picture
        ImageIO.write(bi, "jpg", this.initDestFile());
    }

    public File initDestFile() throws IOException {
        File f = new File("c:\\img02.jpg");

        if (f.exists()) {
            f.delete();
        }
        f.createNewFile();
        return f;
    }

    public static void main(String[] args) {
        SplitImage si = new SplitImage();
        try {
            si.readImage();
        } catch (IOException e) {
            System.out.println("exception");
        }
    }
}

代码下载 SplitImage
这只是一个简单的实现。当然,也可以在servlet端来实现此功能。


|----------------------------------------------------------------------------------------|
                           版权声明  版权所有 @zhyiwww
            引用请注明来源 http://www.blogjava.net/zhyiwww   
|----------------------------------------------------------------------------------------|

你可能感兴趣的:(回复两个朋友的图片裁剪问题)