java实现图片按参数缩小,简单的java图片缩放代码

/**

* @param source: source image file

* @param output: output image file

* @param mode: 0 ratio,1 maxWidth,2 maxHeight,3 maxSide

* @param maxSide: maxWidth, maxHeight or maxSide, different by mode

* @param ratio: ratio if resized by ratio

*/

public static void resizeImage(File source, File output, int mode, Integer maxSide, Double ratio)

throws IOException {

// read image

Image sourceImage = ImageIO.read(source);

// resize image

BufferedImage outputImage = getResizeImage(sourceImage, mode, maxSide, ratio);

// wirite image to file

wirteImageToFile(outputImage, output);

}

/**

* @param source: source image

* @param mode: 0 ratio,1 maxWidth,2 maxHeight,3 maxSide

* @param maxSide: maxWidth, maxHeight or maxSide, different by mode

* @param ratio: ratio if resized by ratio

*/

public static BufferedImage getResizeImage(Image source, int mode, Integer maxSide, Double ratio) {

int srcImageWidth = source.getWidth(null);

int srcImageHeight = source.getHeight(null);

int width = 0, height = 0;

switch (mode) {

case 0:

// resize by ratio

width = (int) (srcImageWidth * ratio);

height = (int) (srcImageHeight * ratio);

break;

case 1:

// resize by max width

width = maxSide;

height = new BigDecimal(srcImageHeight).divide(new BigDecimal(srcImageWidth), 5, RoundingMode.HALF_EVEN)

.multiply(new BigDecimal(width)).intValue();

break;

case 2:

// resize by max height

height = maxSide;

width = new BigDecimal(srcImageWidth).divide(new BigDecimal(srcImageHeight), 5, RoundingMode.HALF_EVEN)

.multiply(new BigDecimal(height)).intValue();

break;

case 3:

// resize by max side(between width and height)

if (srcImageWidth > srcImageHeight) {

width = maxSide;

height = maxSide * srcImageHeight / srcImageWidth;

} else {

width = maxSide * srcImageWidth / srcImageHeight;

height = maxSide;

}

break;

}

BufferedImage t

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中可以使用Java2D的API来实现图片缩放。具体实现步骤如下: 1. 读取原始图片 ```java File inputFile = new File("originalImage.png"); BufferedImage inputImage = ImageIO.read(inputFile); ``` 2. 创建一个新的缩放后的图片 ```java int scaledWidth = inputImage.getWidth() / 2; // 缩放后的宽度 int scaledHeight = inputImage.getHeight() / 2; // 缩放后的高度 BufferedImage outputImage = new BufferedImage(scaledWidth, scaledHeight, inputImage.getType()); ``` 3. 创建一个Graphics2D对象并设置缩放比例 ```java Graphics2D g2d = outputImage.createGraphics(); g2d.drawImage(inputImage, 0, 0, scaledWidth, scaledHeight, null); g2d.dispose(); ``` 4. 将缩放后的图片保存到文件 ```java File outputFile = new File("scaledImage.png"); ImageIO.write(outputImage, "png", outputFile); ``` 完整的代码示例: ```java import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class ImageScaler { public static void main(String[] args) { try { // 读取原始图片 File inputFile = new File("originalImage.png"); BufferedImage inputImage = ImageIO.read(inputFile); // 创建一个新的缩放后的图片 int scaledWidth = inputImage.getWidth() / 2; // 缩放后的宽度 int scaledHeight = inputImage.getHeight() / 2; // 缩放后的高度 BufferedImage outputImage = new BufferedImage(scaledWidth, scaledHeight, inputImage.getType()); // 创建一个Graphics2D对象并设置缩放比例 Graphics2D g2d = outputImage.createGraphics(); g2d.drawImage(inputImage, 0, 0, scaledWidth, scaledHeight, null); g2d.dispose(); // 将缩放后的图片保存到文件 File outputFile = new File("scaledImage.png"); ImageIO.write(outputImage, "png", outputFile); } catch (Exception e) { e.printStackTrace(); } } } ``` 这样就可以将原始图片缩放一半并保存到文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值