java怎么剪裁图片,java如何剪裁图片(2)

这段代码展示了如何使用Java进行图像缩放操作,并根据新的宽度和高度创建并保存调整后的图片,同时提供了文件重命名功能。通过`BufferedImage`和`AffineTransform`,它能处理不同格式的图片如JPG、PNG和GIF。
摘要由CSDN通过智能技术生成

Java codepublic static void scale(String srcFile, int destWidth, int destHeight, String destFile) throws IOException {

BufferedImage src = ImageIO.read(new File(srcFile));

BufferedImage dest = new BufferedImage(destWidth,destHeight,

BufferedImage.TYPE_INT_RGB);

Graphics2D g = dest.createGraphics();

AffineTransform at = AffineTransform.getScaleInstance(

(double)destWidth/src.getWidth(),

(double)destHeight/src.getHeight());

g.drawRenderedImage(src,at);

ImageIO.write(dest,"JPG",new File(destFile));

}

public static File scale(File srcFile, int destWidth) throws IOException {

BufferedImage src = ImageIO.read(srcFile);

if (src.getWidth() <= destWidth) {

return srcFile;

}

int destHeight = (int)(src.getHeight() * ((double)destWidth/src.getWidth()));

BufferedImage dest = new BufferedImage(destWidth,destHeight,

BufferedImage.TYPE_INT_RGB);

Graphics2D g = dest.createGraphics();

AffineTransform at = AffineTransform.getScaleInstance(

(double)destWidth/src.getWidth(),

(double)destHeight/src.getHeight());

g.drawRenderedImage(src,at);

String fileSufix = srcFile.getName().substring(srcFile.getName().lastIndexOf(".") + 1);

File destFile = new File(srcFile.getParent(), UUID.randomUUID().toString() + "." + fileSufix);

ImageIO.write(dest,fileSufix,destFile);

return destFile;

}

public static void main(String[] args) {

// if (args.length == 2) {

// try {

// scale(new File(args[0]),Integer.parseInt(args[1]));

// } catch (Exception e) {

// System.out.println(e);

// }

// } else

// System.out.println("paramater error!");

try {

scale(new File("e:/temp/1.gif"), 100);

scale(new File("e:/temp/2.png"), 100);

scale(new File("e:/temp/3.jpg"), 100);

scale(new File("e:/temp/4.jpeg"), 100);

} catch (Exception ex) {

System.out.println(ex);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中快速裁剪图片通常可以使用开源库如 Apache Commons ImageIO、Java Advanced Imaging (JAI) 或者更现代的 JavaFX 提供的 Image 类。这里是一个简单的示例,使用 Commons IO 库: ```java import org.apache.commons.imaging.ImageReadException; import org.apache.commons.imaging.ImageWriteException; import org.apache.commons.imaging.io.ImageInputStream; import org.apache.commons.imaging.util.IoUtils; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class ImageCropper { public static BufferedImage cropImage(String sourcePath, int x, int y, int width, int height) throws IOException { // 读取原始图像 File inputFile = new File(sourcePath); BufferedImage image = ImageIO.read(inputFile); // 创建一个新的BufferedImage,用于裁剪 BufferedImage croppedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = croppedImage.createGraphics(); // 裁剪并绘制到新的BufferedImage上 g2d.drawImage(image.getSubimage(x, y, width, height), 0, 0, null); g2d.dispose(); return croppedImage; } } ``` 在这个例子中,`cropImage` 方法接受源图片路径、左上角坐标 `x` 和 `y`,以及裁剪后的宽度和高度。它首先读取原图,然后创建一个新的 BufferedImage,并通过 Graphics2D 绘制裁剪的部分到新图片上。 要使用这个方法,你需要处理可能出现的异常,例如 ImageReadException 和 ImageWriteException。此外,如果你需要频繁操作大尺寸图片,考虑使用 JAI 的高效API,因为它支持内存映射文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值