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

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

所以在这里给大家推荐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. JavaSE-异常

    1.try catch finally 异常捕获 public class ExceptionTest { public static void main(String[] args) { int a ...

  2. SQLServer中的cross apply和FOR XML PATH

    参考: FOR XML PATH:http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html cross apply:http ...

  3. 牛客网Java刷题知识点float数据在内存中是怎么存储的

    不多说,直接上干货! float类型数字在计算机中用4个字节存储. 遵循IEEE-754格式标准: 一个浮点数有2部分组成:底数m和指数e (1)底数部分 使用二进制数来表示此浮点数的实际值 (2)指 ...

  4. [原] ubuntu安装Fcitx输入法

    1.终端输入: sudo add-apt-repository ppa:wengxt/fcitx-nightly 按回车确认添加 2.sudo apt-get update 更新软件源 3.sudo ...

  5. PHP多进程系列笔记(五)

    前面几节都是讲解pcntl扩展实现的多进程程序.本节给大家介绍swoole扩展的swoole_process模块. swoole多进程 swoole_process 是swoole提供的进程管理模块, ...

  6. Spring总结 4.AOP之为对象添加新功能

    Spring除了提供增强原有功能的方法外,还提供了为一个对象引入新功能的方法.如下: package cn.powerfully.service; public interface IService ...

  7. [Python] 震惊, 我居然用Python干这种事ꈍ .̮ ꈍ

    阅读本文只需花费你两分钟, 两分钟你买不了吃亏,你也买不了上当. 那么, 为何不静下心来看看呢? Python 海龟创意绘画, Turtle库创作精美图画 Author:Amd794     E-ma ...

  8. Nginx range filter模块数字错误漏洞修复 (Nginx平滑升级)

    对线上生产环境服务器进行漏洞扫描, 发现有两台前置机器存在Nginx range filter模块数字错误漏洞, 当使用nginx标准模块时,攻击者可以通过发送包含恶意构造range域的header ...

  9. MySQL调研笔记1:MySQL调研清单

    0x00 背景 最近公司正在去微软化,之前使用的SQL Server.Oracle将逐步切换到MySQL,所以部门也会跟随公司步伐,一步步将现有业务从SQL Server切换到MySQL,当然上MyS ...

  10. Java中异常发生时代码执行流程

    异常与错误: 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发人员) ...