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

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

所以在这里给大家推荐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. webgl之观察三维空间

    在之前的教程中,我们已经接触到了3d的基本应用,而这里,将会继续介绍两种不同的相机,即透视相机和正投影相机:还会学习设置相机的不同参数,这样就可以使场景以不同的角度显示出来. 一.正投影和透视投影概念 ...

  2. Git for Windows之基础环境搭建与基础操作

    一.安装Git工具 下载地址:Git For Windows 下载完后,安装,全程Next. 二.全局配置 1.配置本地用户名,用于提交代码 2.配置邮箱 三.创建本地Git项目仓库 1.建立代码仓库 ...

  3. Unity学习系列一简介

    一.简介 Unity的目标是为了提升"依赖注入"的思想,去建立更加松耦合的系统.patterns & practices 小组在那个时候实现DI的方式和我们现在认为的DI有 ...

  4. h5实现输入框fixed定位在屏幕最底部兼容性

    1.问题由来 做h5 已经有很长一段时间了,现在做的工作h5比pc上的更多,曾经解决pc端IE各个版本的兼容性也是伤透脑筋,原以为h5的会更好,殊不知,还有更头疼的问题,当设计师要设计一个聊天窗口,把 ...

  5. Git和Gitlab协同工作

    1.概述 在写这篇博客之前,为了更好的描述整个流程,本人亲自尝试了:从搭建到使用,下面就围绕这个流程来阐述整个过程,目录结构如下所示: Git的安装搭建 Git的常规操作 Gitlab的搭建 Gitl ...

  6. 配置codis-dashboard

    codis-dashboard主要用来codis配置使用,也就是说所有的相关的配置项必须通过此进程完成,本演习在60服务上配置测试. 利用codis本身提供的命令自动生成配置文件:1.生成dashbo ...

  7. Disruptor入门

    一.什么是 Disruptor Disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式实现,或者事件-监听模式的实现,直接称disrup ...

  8. jemalloc总结

    jemalloc支持SMP系统和并发多线程,多线程的支持是依赖于多个'arenas',并且一个线程第一次调用内存mallocer,与其相关联的是一个特殊的arena. 线程分配arena只有三种可能的 ...

  9. 外网配置花生壳动态域名解析实现外网访问本地iis及vs实时调试

    描述:假如已连外网,具备一台路由器的情况下在路由器设置页面配置花生壳动态域名解析,使得外网可以访问到本地iis 托管的web服务,模拟真实环境调试应用程序. 网络运营商ip的动态分配,通常网络提供商给 ...

  10. elasticsearch安装ansj分词器

    1.概述    elasticsearch用于搜索引擎,需要设置一些分词器来优化索引.常用的有ik_max_word: 会将文本做最细粒度的拆分.ik_smart: 会做最粗粒度的拆分.ansj等. ...