图片操作 --- 放大 缩小 变灰 切割图片

package image;

import java.awt.Canvas;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.color.ColorSpace;
import java.awt.image.AreaAveragingScaleFilter;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.awt.image.FilteredImageSource;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;

import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;

import tools.FileTypeUtil;
import tools.FileUtil;

/**
 * 图片的先关操作
 * @author Administrator
 *
 */
public class ImageOp {
	private static Component component = new Canvas(); 
	public static void main(String args[]){
		String filename="E:\\1.png";
		//new ImageOp().createImage(filename,"E:/out.jpg");
		new ImageOp().getCulipPicture(filename,2,2,100,100);
	}
	
	public void createImage(String filename,String resultName){
	    try {
			BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filename));
			createZoomSizeImage(bufferedImage,0.3,resultName);
			getGrayPicture(bufferedImage);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}  
	}
	/**
	 * 扩大缩小图片
	 * @param image
	 * @param zoomRatio
	 * @param resultName
	 * @return
	 */
	 public static BufferedImage createZoomSizeImage(BufferedImage image,double zoomRatio,String resultName)  
	    {       
	        int width = new Double(image.getWidth(null) * zoomRatio).intValue();     
	        int height = new Double(image.getHeight(null) * zoomRatio).intValue();     
	        AreaAveragingScaleFilter areaAveragingScaleFilter = new AreaAveragingScaleFilter(width,height);     
	        FilteredImageSource filteredImageSource = new FilteredImageSource(image.getSource(),areaAveragingScaleFilter);     
	        BufferedImage bufferedImage = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);     
	        Graphics graphics = bufferedImage.createGraphics();     
	        graphics.drawImage(component.createImage(filteredImageSource),0,0,null);     
	          
	        try {  
	   ImageIO.write(bufferedImage, "jpg", new File(resultName));  
	  } catch (IOException e) {  
	   e.printStackTrace();  
	  }  
	        return bufferedImage;  
	    } 
	 /**
	  * 变灰图片
	  * @param originalImage
	  * @return
	  */
    public BufferedImage getGrayPicture(BufferedImage originalImage)  
    {  
        BufferedImage grayPicture;  
        int imageWidth = originalImage.getWidth();  
        int imageHeight = originalImage.getHeight();  
          
        grayPicture = new BufferedImage(imageWidth, imageHeight,     
                BufferedImage.TYPE_3BYTE_BGR);  
        ColorConvertOp cco = new ColorConvertOp(ColorSpace     
                .getInstance(ColorSpace.CS_GRAY), null);     
        cco.filter(originalImage, grayPicture);
		try {
			ImageIO.write(grayPicture, "jpg", new File("E:\\out1.jpg"));
		} catch (IOException e) {
			e.printStackTrace();
		}
        return grayPicture;     
    }  
    
    public BufferedImage getCulipPicture(String filename,int x,int y,int width,int height){
    	String imgType = FileUtil.getExtName(filename);
    	if(!"".equals(imgType)){
    		InputStream is=null;
    		ImageInputStream iis=null;
      	  try {
      	   is = new FileInputStream(filename);
      	   Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName(imgType);
      	   ImageReader reader = it.next();
      	   iis = ImageIO.createImageInputStream(is);
      	   reader.setInput(iis, true);
      	   ImageReadParam param = reader.getDefaultReadParam();
      	   Point p = new Point();
      	   p.setLocation(x, y);
      	   Dimension d = new Dimension();
      	   d.setSize(width, height);
      	   Rectangle rect = new Rectangle(p, d);
      	   param.setSourceRegion(rect);
      	   BufferedImage bi = reader.read(0, param);
      	   ImageIO.write(bi, imgType, new File("E:\\out2.jpg"));
      	   is.close();
      	   iis.close();
      	   return bi;
      	  } catch (Exception e) {
      		  e.printStackTrace();
      	  }
    	}
    	return null;
    }
    
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值