`
雨打蕉叶
  • 浏览: 232626 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java高质量图片缩放

阅读更多
/**
	 * 图片缩放
	 * @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针对图片的运算与转换等相关操作技巧,需要的朋友可以参考下

    java代码保存宽高不变压缩图片(失真不大).docx

    java代码保存宽高不变压缩图片(失真不大),按照文件大小,进行压缩质量控制

    java图片处理工具类ImgUtils.java

    实现功能: 叠加图片;图片压缩(支持MultipartFile),添加文本–可根据textWidth参数自动换行,支持行间距、字间距设置;...图片高质量缩放;图片png格式缩放;图片克隆副本;读取图片对象;图片输出 ……

    java图片处理工具类

    实现功能: 附加图片;添加文本–可根据textWidth参数自动换行;图片添加水印图片(全屏铺满);图片添加水印图片、可设置水印图片...图片高质量缩放;图片png格式缩放;图片克隆副本;读取图片对象;图片输出 ……

    java图片处理 文字水印 图片水印 缩放 补白

    第二种是添加图片水印和文字水印两种方法,水印图片可以是GIF,PNG透明的文件,我一般采用的是PNG的,因为它的质量和GIF相比要高一些; 适用人群:Java开发者 使用场景:版权信息标注 目标:可以直接拿来用

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例101 提高产品质量的方法 123 实例102 简单的汽车销售商场 124 5.5 Object类的应用 126 实例103 两只完全相同的宠物 126 实例104 简化equals()方法的重写 127 实例105 重新计算对象的哈希码 129 实例106 简化...

    安卓app开发中图片的用法,app图片使用细节比你想像得多得多

    安卓app开发中图片的用法,app图片使用细节比你想像得多得多 在java原生app中放一张图片比你想像得难得多,可不是放一张图片就能搞定的,要...缩放图片时安卓无法保证图片高质量, 位图使用多少内存 等 我现在一一给你讲解

    使用Thumbnails实现图片指定大小压缩

    比如:宽高(size),缩放(scale),制定质量比(outputQuality)等。 插件使用的jar包为: thumbnailator-0.4.8.jar 代码如下: /** * * @param srcPath 原图片地址 * @param desPath 目标图片地

    基于vuejs,webpack实现的图片显示组件,支持缩放,旋转,翻转..zip

    【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目...

    Android开发人员不得不收集的代码

    App 相关 -> AppUtils.java -> Demo isInstallApp : 判断 App 是否安装 installApp : 安装 App(支持 8.0) installAppSilent : 静默安装 App uninstallApp : 卸载 App uninstallAppSilent : 静默卸载 App ...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    工程硕士学位论文 ...研究生姓名: 唐帅 导师姓名: 罗军舟 教授 苏生 教授 申请学位类别 工 程 硕 士 学位授予单位 东 南 大 学 工程领域名称 软 件 工 程 论文答辩日期 ...学位授予日期 答辩委员会主席 评阅人 ...

    网管教程 从入门到精通软件篇.txt

    网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令...JAVA:Java源文件 JFF,JFIF,JIF:JPEG文件 JPE,JPEG,JPG:JPEG图形文件 JS:javascript源文件 JSP:HTML网页,其中包含有对一个Java servlet...

    QT 绘图函数

    前面说的是一个方面,也就是,在一些对图像质量要求不高的环境下,或者说性能受限的环境下,比如嵌入式和手机环境,是不必须要进行反走样的。另外还有一点,在一些必须精确操作像素的应用中,也是不能进行反走样的。...

    openmeetings视频会议系统-其他

    音频+视频仅音频仅视频仅图片另外,您可以更改视频/音频质量,选择多个摄像机分辨率(4:3、16:9或3:2),然后选择输入设备。会议录制和屏幕共享录制的会议包含一切内容,包括从所有音频流中录制的声音,完全按照...

Global site tag (gtag.js) - Google Analytics