java 图片指定宽度,高度等比例缩放,并且压缩

本文介绍了如何使用Java技术,通过HttpUtil下载Excel中的图片,将其读取为BufferedImage,计算并调整尺寸以保持宽高比,然后对图片进行压缩,并将压缩后的图片写入服务器目录的过程。
摘要由CSDN通过智能技术生成
 byte[] bytes = HttpUtil.downloadBytes(excelUrl);

InputStream in = new ByteArrayInputStream(bytes);

//读取图片输入流为 BufferedImage
BufferedImage image = ImageIO.read(in);

// 计算高度以保持宽高比
int targetHeight = (int) (image.getHeight() * ((double) 360 / image.getWidth()));
//创建新的图片,按宽度等比例缩放
BufferedImage resizedImage = new BufferedImage(360, targetHeight, image.getType()); 
resizedImage.getGraphics().drawImage(image, 0, 0, 360, targetHeight, null);
 //创建压缩后的目录
File file2 = new File(path.concat(prefix).concat(network).concat("image/").concat(uuid.concat(".").concat(suffix)));
//压缩并写入服务器目录
ImgUtil.scale(resizedImage,file2, (float) 0.5F);
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以使用 Java 的 ImageIO 类和 BufferedImage 类来实现对图片按照宽度比例压缩并保证清晰度的功能。具体实现步骤如下: 1. 使用 ImageIO 类的 read() 方法读取原始图片,并获取图片宽度高度。 2. 计算出按照指定宽度进行等比例缩放后的高度。 3. 创建一个 BufferedImage 对象,并使用 getGraphics() 方法获取 Graphics2D 对象。 4. 使用 Graphics2D 对象的 setRenderingHint() 方法设置抗锯齿和插值的属性。 5. 使用 Graphics2D 对象的 drawImage() 方法将原始图片绘制到 BufferedImage 对象中。 6. 使用 ImageIO 类的 write() 方法将 BufferedImage 对象写入到指定文件中。 下面是一个示例代码: ```java import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ImageUtils { public static void compressImage(String srcPath, String destPath, int width) throws IOException { File srcFile = new File(srcPath); BufferedImage srcImage = ImageIO.read(srcFile); int srcWidth = srcImage.getWidth(); int srcHeight = srcImage.getHeight(); int destHeight = srcHeight * width / srcWidth; BufferedImage destImage = new BufferedImage(width, destHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = destImage.createGraphics(); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); g2d.drawImage(srcImage, 0, 0, width, destHeight, null); g2d.dispose(); ImageIO.write(destImage, "JPEG", new File(destPath)); } } ``` 在上面的代码中,compressImage() 方法接收三个参数:原始图片的路径、压缩图片的路径和指定宽度。该方法读取原始图片,计算出压缩后的高度,创建一个 BufferedImage 对象,并使用 Graphics2D 对象将原始图片绘制到 BufferedImage 对象中,最后将 BufferedImage 对象写入到指定文件中。 你可以根据自己的需要修改该方法,比如新增一个参数用于指定输出格式等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值