java图片处理,截图,等比截取

package com.jzlife.nurse.util;

import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

/**
 * 
 * @author lu
 *
 */
public class ImagePixelConvert {

	private static final int IMG_WIDTH = 180;
	private static final int IMG_HEIGHT = 230;
	
//	public static void main(String[] args) throws IOException {
//		BufferedImage buffImg = new BufferedImage(30*10, 20, BufferedImage.TYPE_INT_RGB);
//		Graphics2D g = buffImg.createGraphics();
//		g.setColor(new Color(198, 217, 241));
//		g.fillRect(0, 0,buffImg.getWidth(), buffImg.getHeight());
//		ImageIO.write(buffImg, "png", new File("D:\\3.png"));
//	}

	public static void main(String[] args) {

		try {

			BufferedImage originalImage = ImageIO.read(new File("D:\\1570515923048.jpg"));
			int type = originalImage.getType() == 0 ? BufferedImage.TYPE_INT_ARGB
					: originalImage.getType();
			
			BufferedImage resizeImageHintPng = resizeImageWithHint2(
					originalImage, type);
			ImageIO.write(resizeImageHintPng, "png", new File("D:\\5.jpg"));

//			BufferedImage resizeImageJpg = resizeImage(originalImage, type);
//			ImageIO.write(resizeImageJpg, "jpg", new File("D:\\2.jpg"));//图片会变红色

//			BufferedImage resizeImagePng = resizeImage(originalImage, type);
//			ImageIO.write(resizeImagePng, "png", new File("D:\\3.jpg"));
//
//			BufferedImage resizeImageHintJpg = resizeImageWithHint(
//					originalImage, type);
//			ImageIO.write(resizeImageHintJpg, "jpg", new File("D:\\4.jpg"));//图片会变红色
//
//			BufferedImage resizeImageHintPng = resizeImageWithHint(
//					originalImage, type);
//			ImageIO.write(resizeImageHintPng, "png", new File("D:\\5.jpg"));

		} catch (IOException e) {
			System.out.println(e.getMessage());
		}

	}

	/**
	 * 生成长条
	 * @param width
	 * @param height
	 * @return
	 */
	public static BufferedImage createBufferedImage(int width,int height) {
		BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		Graphics2D g = buffImg.createGraphics();
		g.setColor(new Color(198, 217, 241));
		g.fillRect(0, 0,buffImg.getWidth(), buffImg.getHeight());
//		ImageIO.write(buffImg, "png", new File("D:\\3.png"));
		return buffImg;
	}
	
	@SuppressWarnings("unused")
	public static BufferedImage resizeImage(BufferedImage originalImage,
			int type) {
		BufferedImage resizedImage = new BufferedImage(IMG_WIDTH, IMG_HEIGHT,
				type);
		Graphics2D g = resizedImage.createGraphics();
		g.drawImage(originalImage, 0, 0, IMG_WIDTH, IMG_HEIGHT, null);
		g.dispose();

		return resizedImage;
	}

	@SuppressWarnings("unused")
	public static BufferedImage resizeImageWithHint(
			BufferedImage originalImage, int type) {

		BufferedImage resizedImage = new BufferedImage(IMG_WIDTH, IMG_HEIGHT,
				type);
		Graphics2D g = resizedImage.createGraphics();
		g.drawImage(originalImage, 0, 0, IMG_WIDTH, IMG_HEIGHT, null);
		g.dispose();
		g.setComposite(AlphaComposite.Src);

		g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
				RenderingHints.VALUE_INTERPOLATION_BILINEAR);
		g.setRenderingHint(RenderingHints.KEY_RENDERING,
				RenderingHints.VALUE_RENDER_QUALITY);
		g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
				RenderingHints.VALUE_ANTIALIAS_ON);

		return resizedImage;
	}
	
	/**
	 * 等比截取需要的图片
	 * @param originalImage
	 * @param type
	 * @return
	 */
	@SuppressWarnings("unused")
	public static BufferedImage resizeImageWithHint2(
			BufferedImage originalImage, int type) {

		int width = originalImage.getWidth();
		int height = originalImage.getHeight();
		
		float dengbizhi=(float)IMG_WIDTH/(float)IMG_HEIGHT;//等比值
		
		float bn=(float) ((width/height)-dengbizhi);
		if(bn!=0) {//bn>0.2||bn<-0.2
			System.out.println("不等比");
			//不等比,要截取到等比,
			//拿宽度/等比值=需要的高度,再用总高度减去需要的高度,得到高度开始值
			int needH=(int) (width/dengbizhi);
			int startH=height-needH;
			 originalImage = originalImage.getSubimage(0,startH/2,width,needH);//startH/2是上下等比截取
		}
		
		BufferedImage resizedImage = new BufferedImage(IMG_WIDTH, IMG_HEIGHT,type);
		Graphics2D g = resizedImage.createGraphics();//创建新的高度
		g.drawImage(originalImage, 0, 0, IMG_WIDTH, IMG_HEIGHT, null);
		g.dispose();
		

		return resizedImage;
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值