`

使用 Thumbnails 压缩图片

 
阅读更多

     PC上线的商城,最近推出了手机版(App & 微信公众号)

      商品图片之前适配的PC版,尺寸较大,在手机端直接浏览会比较占用比较高的带宽导致速度变慢,本想让美工重新上传手机适配版的,商品繁多,重复工作;所以就查了一下图片压缩的资料;然后看到了Google开源 项目Thumbnails;用了一下发现效果挺不错;代码比价简单

Thumbnails.of("源文件路径") 
			        .scale(1f) //0-1 float 压缩大小
			        .outputQuality(0.7f) //0-1 压缩质量
			        .toFile("新文件路径");

    当然还有其他支持的方法:旋转、裁剪、格式转换、加水印等;可自行查阅相关资料

   

      这样运行了一段时间,突然在手机端发现有些图片底色变色非常严重,开始怀疑是设置质量outputQuality的问题,但是测试发现设置为1问题依然存在,然后怀疑是否是jpg的问题呢,用Thumbnails方法将jpg转成png,然后再压缩,问题还是存在;最后用画图工具将jpg转成png,再将png压缩发现图片色彩没有丢失的情况;但是问题又来了,发现png压缩无论怎么设置outputQuality压缩后的文件大小并没有非常明显的改善;而且要手工将jpg转png(上万张图片 内心是拒绝的)

  带着疑问查了下相关资料,这一块资料比较少,这也是我将此记录下来分享的原因;发现一些代码中用到了阿里的ImageReadHelper类,抱着试试的态度尝试了下,使用ImageReadHelper的方法作为Thumbnails输入流,问题终于解决了

				        File in = new File(filePath); // 原图片
				        FileInputStream inStream = new FileInputStream(in);
                                        String scaleReq   = request.getParameter("scale");
					String qualityReq = request.getParameter("quality");
					float scale   = 1;
					float quality = 0.5F;
					if(scaleReq != null && !"".equals(scaleReq)){
						scale = Float.parseFloat(scaleReq);
					}
					if(qualityReq != null && !"".equals(qualityReq)){
						quality = Float.parseFloat(qualityReq);
					}
					
					imageWrapper = ImageReadHelper.read(inStream);
					Thumbnails.of(imageWrapper.getAsBufferedImage())
						.scale(scale) 
						.outputQuality(quality) 
						.toFile(thumPath);

 附件为Thumbnails、simpleimage及所需Jar包,供需要的人下载

    

      

分享到:
评论

相关推荐

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

    Thumbnails是一个基于Java的图像处理库,它简化了图片处理的过程,尤其是在缩放和压缩图片方面。 对于图片压缩的需求,主要可以分为两类:一类是基于图片尺寸的压缩,另一类是基于文件大小的压缩。在给出的例子中,...

    Thumbnails 纯java图片压缩api 包括文档及相关学习资料

    - **数据存储**:在大数据分析或云存储服务中,压缩图片可以节省存储空间。 - **移动应用**:对于移动设备,由于内存和存储空间有限,图片压缩是必不可少的。 - **图像处理**:在进行批量图片处理或自动化工作流...

    Thumbnails图片处理压缩/裁剪java代码纯净示例+注释详细

    本示例将深入讲解如何使用`Thumbnails`库进行图片处理,并通过实际代码示例进行演示。 首先,我们需要在项目中引入`Thumbnails`库。通常,这可以通过Maven或Gradle完成。在Maven的`pom.xml`文件中添加以下依赖: `...

    图片压缩类

    - 在Windows应用程序开发中,可能使用.NET框架,其中包含System.Drawing命名空间,可以处理基本的图片操作,包括压缩。例如,可以使用Bitmap类的Save方法,通过ImageCodecInfo和Encoder类来设置压缩参数。 - ...

    Django 使用easy_thumbnails压缩上传的图片方法

    ### Django 使用 easy-thumbnails 压缩上传的图片方法详解 #### 一、easy-thumbnails 概述 `easy-thumbnails` 是一款强大的、易于实现的 Django 应用程序,它能够为 Django 项目提供图像处理功能,尤其适用于需要...

    自制java图片压缩桌面软件,使用谷歌Thumbnails 算法实现

    标题中的“自制java图片压缩桌面软件”涉及到的知识点主要集中在Java编程语言上,以及使用了谷歌的Thumbnails算法来实现图片的压缩功能。这表明该软件是使用Java编写的一个桌面应用程序,可以运行在Windows系统上,...

    图片过大引起的内存溢出解决方案

    1. **使用inJustDecodeBounds选项预加载图片信息**:首先设置`BitmapFactory.Options`中的`inJustDecodeBounds`属性为`true`,这样`BitmapFactory`只读取图片的边界信息(宽度和高度),而不真正解码图片数据。...

    C#无损高质量压缩图片代码

    本文分享的C#无损高质量压缩图片代码主要通过使用System.Drawing命名空间中的Image类和Graphics类来实现图片的压缩。该代码可以根据用户指定的高度、宽度和压缩质量来生成高质量的压缩图片。 2. 图片压缩的原理: ...

    图片处理工具类(缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等)

    图片缩放是调整图像大小的过程,通常使用插值算法来保持图像的质量。在Java中,可以使用`BufferedImage`类的`getSubimage()`方法获取图像的一部分,然后使用`Graphics2D`类的`drawImage()`方法以新的尺寸绘制图像。...

    图片压缩 thumbnailator

    例如,你可以创建一个`Thumbnails.Builder`对象,然后调用其一系列方法来设置缩放、旋转等参数,最后调用`write()`方法将处理后的图片写入到指定文件。 通过thumbnailator 这个库,Java开发者可以轻松地在自己的...

    Easy Thumbnails

    "Easy Thumbnails"是一款高效实用的图像处理软件,专注于批量生成图片缩略图并进行图片大小优化,以在不损害视觉效果的前提下减少图片占用的存储空间。这个工具对于那些需要管理和整理大量图片的用户来说,是一个...

    Thumbnailator图片压缩Demo以及jar包

    ThumbnailatorDemo.java是一个演示程序,展示了如何使用Thumbnailator库进行图片压缩。以下是一些关键知识点: 1. **导入库**:在Java程序中,首先需要通过`import`语句引入Thumbnailator库,例如`import ...

    java实现上传图片并压缩图片大小功能

    java实现上传图片并压缩图片大小功能是指使用java语言实现上传图片并对其进行压缩处理,以达到减少图片大小的目的。在本文中,我们将详细介绍如何使用java实现上传图片并压缩图片大小功能。 首先,我们需要使用...

    图片按照指定宽度或者高度等比例压缩图片以及裁剪图片

    "图片按照指定宽度或高度等比例压缩图片以及裁剪图片"这个主题涉及到图像处理的关键技术,包括图像缩放和裁剪。接下来,我们将深入探讨这两个概念。 首先,**等比例压缩图片**是保持图片原有宽高比的情况下调整图片...

    图片流压缩,不同样设置图片的压缩比

    7. **多级压缩**:允许使用多个压缩级别,根据需要在不同场景下选择合适级别的解压缩,如在网络状况好时使用低压缩比,网络受限时切换到高压缩比。 图片流压缩技术在视频会议、在线直播、云存储等领域有广泛应用。...

    thumbnailator-0.4.8.jar包,和压缩图片工具类

    使用thumbnailator-0.4.8.jar包时,开发者首先需要将其添加到项目的类路径中,然后可以通过创建`Thumbnails`对象来开始处理图片。例如,以下代码展示了如何生成一个缩略图: ```java import ...

    解决java压缩图片透明背景变黑色的问题

    本文将深入探讨如何解决Java压缩图片时透明背景变黑色的问题。 首先,我们需要理解Java中的图像处理涉及到的主要类,如`BufferedImage`和`Graphics2D`。`BufferedImage`是一个内存中的图像对象,可以用来创建、读取...

    PyPI 官网下载 | easy-thumbnails-rest-1.0.6.tar.gz

    这个库的源代码被压缩成一个名为"easy-thumbnails-rest-1.0.6.tar.gz"的文件。 `easy-thumbnails-rest`是一个专门用于处理图片缩略图的库,它是`easy-thumbnails`库的一个扩展,专门为RESTful API设计。`easy-...

Global site tag (gtag.js) - Google Analytics