案例需求:
根据指定的文件名称,用户给定的缩放比例来完成缩放图片思路分析:
1、文件对象File
2、BufferedImage构造器: 图像数据的访问的缓冲器3、用到的API
方法 说明 getWidth() 返回图像宽度 getHeight() 返回图像高度 public Image getScaledInstance(int width, int height, int hints) 创建此图像的缩放版本,宽高为0图片显示原本大小 getGraphics() 一个新的图形上下文,这是这个图形上下文的副本 public abstract boolean drawImage(Image img,
int x,
int y,
ImageObserver observer)绘制当前可用的指定图像的大小 dispose() 释放文件资源
package com.zcl.newDemo;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ImageDemo {
public static void main(String[] args) throws Exception {
// 1、定义图像文件对象
File fileImage = new File("file-app\1.jpg");
// 2、定义图像图像数据的访问的缓冲器
BufferedImage bufferedImage = ImageIO.read(fileImage);
// 3、获取图片的原始宽高
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
// 4、获取图片的缩放【宽高都是*了缩放比例的再取整】
Image scaledInstance = bufferedImage.getScaledInstance(Double.valueOf(width*0.5).intValue(),Double.valueOf(height * 0.5).intValue(),Image.SCALE_DEFAULT);
// 5、将Image类型转换成BufferedImage对象[BufferedImage.TYPE_INT_ARGB:表示具有8位RGBA颜色成分的整数像素的图像]
BufferedImage newImage = new BufferedImage(Double.valueOf(width*0.5).intValue(),Double.valueOf(height * 0.5).intValue(),BufferedImage.TYPE_INT_ARGB);
// 一个新的图形上下文,这是这个图形上下文的副本
Graphics g = newImage.getGraphics();
// 绘制图片大小
boolean b = g.drawImage(scaledInstance, 0, 0, null);
// 释放文件资源
g.dispose();
// 将新的图片文件写入到指定的文件夹中
ImageIO.write(newImage,"png",new File("缩放图片.png"));
System.out.println("缩放图片生成成功!");
}
}



