/**
* 图片缩放
* @param originalFile 源文件
* @param resizedFile 目标文件
* @param newWidth 新图片的宽度
* @param quality 成像质量
* @throws IOException
*/
public static void resize(File originalFile, File resizedFile,
int newWidth, float quality) throws IOException {
if (quality > 1) {
throw new IllegalArgumentException(
"Quality has to be between 0 and 1");
}
ImageIcon ii = new ImageIcon(originalFile.getCanonicalPath());
Image i = ii.getImage();
Image resizedImage = null;
int iWidth = i.getWidth(null);
int iHeight = i.getHeight(null);
if (iWidth > iHeight) {
resizedImage = i.getScaledInstance(newWidth, (newWidth * iHeight)
/ iWidth, Image.SCALE_AREA_AVERAGING);
} else {
resizedImage = i.getScaledInstance((newWidth * iWidth) / iHeight,
newWidth, Image.SCALE_AREA_AVERAGING);
}
// This code ensures that all the pixels in the image are loaded.
Image temp = new ImageIcon(resizedImage).getImage();
// Create the buffered image.
BufferedImage bufferedImage = new BufferedImage(temp.getWidth(null),
temp.getHeight(null), BufferedImage.TYPE_INT_RGB);
// Copy image to buffered image.
Graphics g = bufferedImage.createGraphics();
// Clear background and paint the image.
g.setColor(Color.white);
g.fillRect(0, 0, temp.getWidth(null), temp.getHeight(null));
g.drawImage(temp, 0, 0, null);
g.dispose();
// Soften.
float softenFactor = 0.05f;
float[] softenArray = { 0, softenFactor, 0, softenFactor,
1 - (softenFactor * 4), softenFactor, 0, softenFactor, 0 };
Kernel kernel = new Kernel(3, 3, softenArray);
ConvolveOp cOp = new ConvolveOp(kernel,
ConvolveOp.EDGE_NO_OP, null);
bufferedImage = cOp.filter(bufferedImage, null);
// Write the jpeg to a file.
FileOutputStream out = new FileOutputStream(resizedFile);
// Encodes image as a JPEG data stream
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder
.getDefaultJPEGEncodeParam(bufferedImage);
param.setQuality(quality, true);
encoder.setJPEGEncodeParam(param);
encoder.encode(bufferedImage);
}
Image.SCALE_AREA_AVERAGING为缩放算法,可根据需求查API选择不同的缩放算法。
分享到:
相关推荐
主要介绍了Java实现的图片高质量缩放类定义与用法,涉及java针对图片的运算与转换等相关操作技巧,需要的朋友可以参考下
java代码保存宽高不变压缩图片(失真不大),按照文件大小,进行压缩质量控制
实现功能: 叠加图片;图片压缩(支持MultipartFile),添加文本–可根据textWidth参数自动换行,支持行间距、字间距设置;...图片高质量缩放;图片png格式缩放;图片克隆副本;读取图片对象;图片输出 ……
实现功能: 附加图片;添加文本–可根据textWidth参数自动换行;图片添加水印图片(全屏铺满);图片添加水印图片、可设置水印图片...图片高质量缩放;图片png格式缩放;图片克隆副本;读取图片对象;图片输出 ……
第二种是添加图片水印和文字水印两种方法,水印图片可以是GIF,PNG透明的文件,我一般采用的是PNG的,因为它的质量和GIF相比要高一些; 适用人群:Java开发者 使用场景:版权信息标注 目标:可以直接拿来用
实例101 提高产品质量的方法 123 实例102 简单的汽车销售商场 124 5.5 Object类的应用 126 实例103 两只完全相同的宠物 126 实例104 简化equals()方法的重写 127 实例105 重新计算对象的哈希码 129 实例106 简化...
安卓app开发中图片的用法,app图片使用细节比你想像得多得多 在java原生app中放一张图片比你想像得难得多,可不是放一张图片就能搞定的,要...缩放图片时安卓无法保证图片高质量, 位图使用多少内存 等 我现在一一给你讲解
比如:宽高(size),缩放(scale),制定质量比(outputQuality)等。 插件使用的jar包为: thumbnailator-0.4.8.jar 代码如下: /** * * @param srcPath 原图片地址 * @param desPath 目标图片地
【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目...
App 相关 -> AppUtils.java -> Demo isInstallApp : 判断 App 是否安装 installApp : 安装 App(支持 8.0) installAppSilent : 静默安装 App uninstallApp : 卸载 App uninstallAppSilent : 静默卸载 App ...
工程硕士学位论文 ...研究生姓名: 唐帅 导师姓名: 罗军舟 教授 苏生 教授 申请学位类别 工 程 硕 士 学位授予单位 东 南 大 学 工程领域名称 软 件 工 程 论文答辩日期 ...学位授予日期 答辩委员会主席 评阅人 ...
网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令...JAVA:Java源文件 JFF,JFIF,JIF:JPEG文件 JPE,JPEG,JPG:JPEG图形文件 JS:javascript源文件 JSP:HTML网页,其中包含有对一个Java servlet...
前面说的是一个方面,也就是,在一些对图像质量要求不高的环境下,或者说性能受限的环境下,比如嵌入式和手机环境,是不必须要进行反走样的。另外还有一点,在一些必须精确操作像素的应用中,也是不能进行反走样的。...
音频+视频仅音频仅视频仅图片另外,您可以更改视频/音频质量,选择多个摄像机分辨率(4:3、16:9或3:2),然后选择输入设备。会议录制和屏幕共享录制的会议包含一切内容,包括从所有音频流中录制的声音,完全按照...