我们在平时的开发中,偶尔也会遇到图片处理的问题,比如图片的压缩,按比例改变图片的大小,不按比例改变图片的大小等等。

如果要自己去开发这样一套工具,我觉得大多数人都是做不到的,所以还是学会站在巨人的肩膀上来的比较轻巧。

所以在这里给大家推荐google使用的开源工具包thumbnailator,这个工具包可以满足各种各样的图片处理要求,除了上面说的还包括旋转,裁切,加水印等等。

而且图片处理过后能保持不错的质量,图片处理性能也ok,代码也比较容易使用,多用用就熟悉了。

这里给大家举一下不按照比例改变图片的大小的代码的例子,大家在以后遇到图片处理问题的时候可以举一反三去完善这个图片处理工具类。

在maven中依赖此工具包:

 <!-- 图片处理工具 -->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.6</version>
</dependency>

写一个公共的图片处理工具类:

 package com.cfwx.weixin.common.utils;

 import java.io.IOException;

 import net.coobird.thumbnailator.Thumbnails;

 /**
* 图片处理工具类
*
* @author lixiao
* @version 1.0
* @date 2018/04/18
*/
public class PictureUtil
{ /**
* 私有化工具类对象
*/
private PictureUtil()
{
} /**
* 不按照比例,指定大小进行缩放
*
* @param inFilepath
* @param width
* @param height
* @param outFilepath
* @throws IOException
*/
public static void keepAspectRatioFalse(String inFilepath, int width, int height, String outFilepath) throws IOException
{
Thumbnails.of(inFilepath).size(width, height).keepAspectRatio(false).toFile(outFilepath);
} }

将构造函数私有化可以避免创建此工具类的对象,这样就只能通过类名调用此工具类的静态方法,我们这里封装了一个不按照比例,指定大小进行缩放的方法,inFilePath是指原图片保存的路径,在项目中一般使用临时文件,业务处理结束后,一般会将临时文件删除,避免暂用项目空间,造成项目臃肿,width宽度,height高度,outFilepath为输出图片保存路径,同理此文件根据情况也可以作为临时文件,比如前端要下载指定大小的图片,那么后端处理结束后需要将之前处理的图片删除,避免造成项目臃肿。

Thumbnails类的of方法指定原图片路径,size方法指定图片的大小,keepAspectRatio指定是否按照比例缩放,toFile方法用来输出处理后的图片到指定路径。

thumbnailator工具包中还有很多方法来实现各种各样的图片处理,这里就不给大家一一列举,大家自己把thumbnailator工具包下载下来,结合相关的api资料去完善自己的图片处理工具类,然后去玩一玩图片的各种处理。

结束语:知识是一种使求知者吃得越多越觉得饿的粮食。

可爱博主:AlanLee

博客地址:http://www.cnblogs.com/AlanLee

本文出自博客园,欢迎大家加入博客园。

使用thumbnailator不按照比例,改变图片的大小的更多相关文章

  1. 【Thumbnailator】java 使用Thumbnailator实现等比例缩放图片,旋转图片等【转载】

    Thumbnailator概述:     Thumbnailator是与Java界面流畅的缩略图生成库.它简化了通过提供一个API允许精细的缩略图生成调整生产从现有的图像文件的缩略图和图像对象的过程, ...

  2. 使用jQuery动态改变图片显示大小

    当我们要显示后台传过来若干个尺寸不一的图片时,为了保证图片大小的一致性及比例的协调,需要动态改变图片显示尺寸.通过搜索,我们可以从网上找到实现此 功能的jQuery代码如下.这段代码可以使图片的大小保 ...

  3. c# 改变图片的大小(w,h)

    本文介绍获取网络上的图片将其大小尺寸改成自己想要的 /// <summary> /// 图片大小裁剪 /// </summary> /// <param name=&qu ...

  4. 通过html5的range属性动态改变图片的大小

    range属性已经是很成熟的属性了,我们可以使用这个属性进行动态调整图片的宽度,其中原理在于通过不断获取range的值,并赋予给所需要的图片,进而达到动态改变图片的效果.下面贴出具体的代码,主要参照了 ...

  5. img超出div width时, jQuery动态改变图片显示大小

    参考: 1. http://blog.csdn.net/roman_yu/article/details/6641911 2. http://www.cnblogs.com/zyzlywq/archi ...

  6. java改变图片文件尺寸

    package test.common; import java.awt.Graphics; import java.awt.Image; import java.awt.image.Buffered ...

  7. JavaScript--鼠标滚动改变图片大小

    鼠标滚动改变图片的大小: 原理:当鼠标滚动时改变了zoom的值: <!DOCTYPE HTML> <html> <head> <title>通过鼠标滚轮 ...

  8. 利用CSS3 filter:drop-shadow实现纯CSS改变图片颜色

    体验更优排版请移步原文:http://blog.kwin.wang/programming/css3-filter-drop-shadow-change-color.html 之前做项目过程中有时候遇 ...

  9. 使用javascript改变图片路径

    效果预览:http://keleyi.com/keleyi/phtml/jstexiao/16.htm 代码如下: <!DOCTYPE html> <html> <hea ...

随机推荐

  1. [转]网页实时聊天之js和jQuery实现ajax长轮询 PHP

    网页实时聊天之js和jQuery实现ajax长轮询 众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的 ...

  2. 全网最详细的大数据集群环境下多个不同版本的Cloudera Hue之间的界面对比(图文详解)

    不多说,直接上干货! 为什么要写这么一篇博文呢? 是因为啊,对于Hue不同版本之间,其实,差异还是相对来说有点大的,具体,大家在使用的时候亲身体会就知道了,比如一些提示和界面. 安装Hue后的一些功能 ...

  3. JavaScript -- Window-Scroll

    -----037-Window-Scroll.html----- <!DOCTYPE html> <html> <head> <meta http-equiv ...

  4. CNN网络架构演进

    卷积神经网络可谓是现在深度学习领域中大红大紫的网络框架,尤其在计算机视觉领域更是一枝独秀.CNN从90年代的LeNet开始,21世纪初沉寂了10年,直到12年AlexNet开始又再焕发第二春,从ZF ...

  5. 作用域中LHS查询和RHS查询

    LHS查询:赋值操作左侧的查询,LHS查询试图找到变量的容器本身,,从而对其赋值. RHS查询:赋值操作右侧的查询,可以理解为"取到某某的值" 举例: function foo(a ...

  6. Java之建造者模式(Builder Pattern)(转)

    1.概念 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. [构建与表示分离,同构建不同表示] 与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者 ...

  7. ASP.NET开发,从二层至三层,至面向对象 (5)

    此是一系列博文,最后一篇了.也是面向初学者而作,望你们能有更好,更多对ASP.NET面向对编程了解与认识. 前一篇中<ASP.NET开发,从二层至三层,至面向对象 (4)>http://w ...

  8. Spring基础(3) : 静态工厂和实例工厂创建bean

    public class Factory { public static Person staticCreate(){ Person p = new Person(); p.name="st ...

  9. 安卓开发笔记①:利用高德地图API进行定位、开发电子围栏、天气预报、轨迹记录、搜索周边(位置)

    高德地图开发时需要导入的包在下面的网盘链接中:(由于高德地图api更新得太快,官网上最新的包使用起来没有之前的方便,所以以下提供最全面的原始包) 链接:http://pan.baidu.com/s/1 ...

  10. C# ArrayList的使用方法小总结

    1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...