public FileEntry getThumbnailFile(FileEntry fileEntry, String fileName, String contentType)
{
try
{
Image image = ImageIO.read(fileEntry.getFile());
// 为等比缩放计算输出的图片宽度及高度
double rate1 = ((double) image.getWidth(null)) / (double) outputWidth + 0.1;
double rate2 = ((double) image.getHeight(null)) / (double) outputHeight + 0.1;
// 根据缩放比率大的进行缩放控制
double rate = rate1 > rate2 ? rate1 : rate2;
int newWidth = (int) (((double) image.getWidth(null)) / rate);
int newHeight = (int) (((double) image.getHeight(null)) / rate);
// SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的 优先级比速度高 生成的图片质量比较好 但速度慢
BufferedImage tag = new BufferedImage((int) newWidth, (int) newHeight, BufferedImage.TYPE_INT_RGB);
// 绘制缩小后的图
tag.getGraphics().drawImage(image, 0, 0, newWidth, newHeight, null);
// File destFile = new File("C:\\temp\\456.jpg");
// FileOutputStream out = new FileOutputStream(destFile); // 输出到文件流
UUID fileId = UUID.randomUUID();
File file = this.getFileById(fileId, true);
FileOutputStream out = new FileOutputStream(file);
// 可以正常实现bmp、png、gif转jpg
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag); // JPEG编码
out.close();
return new FileEntry(fileId, file, fileName, contentType);
}
catch (Throwable t)
{
return fileEntry;
}
}
java后台压缩图片
最新推荐文章于 2023-12-17 22:57:09 发布