import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream; import javax.imageio.ImageIO; import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.geometry.Positions; public class Test {
public static void main(String[] args) throws IOException {
Test thumbnailatorTest = new Test();
// thumbnailatorTest.test1();
// thumbnailatorTest.test2();
// thumbnailatorTest.test3();
// thumbnailatorTest.test4();
// thumbnailatorTest.test5();
// thumbnailatorTest.test6();
thumbnailatorTest.test7();
// thumbnailatorTest.test8();
// thumbnailatorTest.test9();
} /**
* 指定大小进行缩放
*
* @throws IOException
*/
private void test1() throws IOException {
/*
* size(width,height) 若图片横比200小,高比300小,不变
* 若图片横比200小,高比300大,高缩小到300,图片比例不变 若图片横比200大,高比300小,横缩小到200,图片比例不变
* 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300
*/
Thumbnails.of("E:\\图片\\15.jpg").size(200, 300).toFile(
"E:\\图片\\image_200x300.jpg");
Thumbnails.of("E:\\图片\\15.jpg").size(2560, 2048).toFile(
"E:\\图片\\image_2560x2048.jpg");
} /**
* 按照比例进行缩放
*
* @throws IOException
*/
private void test2() throws IOException {
/**
* scale(比例)
*/
Thumbnails.of("E:\\图片\\15.jpg").scale(0.25f)
.toFile("E:\\图片\\image_25%.jpg");
Thumbnails.of("E:\\图片\\15.jpg").scale(1.10f).toFile(
"E:\\图片\\image_110%.jpg");
} /**
* 不按照比例,指定大小进行缩放
*
* @throws IOException
*/
private void test3() throws IOException {
/**
* keepAspectRatio(false) 默认是按照比例缩放的
*/
Thumbnails.of("E:\\图片\\15.jpg").size(120, 120).keepAspectRatio(false)
.toFile("E:\\图片\\image_120x120.jpg");
} /**
* 旋转
*
* @throws IOException
*/
private void test4() throws IOException {
/**
* rotate(角度),正数:顺时针 负数:逆时针
*/
Thumbnails.of("E:\\图片\\15.jpg").size(1280, 1024).rotate(90).toFile(
"E:\\图片\\image+90.jpg");
Thumbnails.of("E:\\图片\\15.jpg").size(1280, 1024).rotate(-90).toFile(
"E:\\图片\\iamge-90.jpg");
} /**
* 水印
*
* @throws IOException
*/
private void test5() throws IOException {
/**
* watermark(位置,水印图,透明度)
*/
Thumbnails.of("E:\\图片\\images/15.jpg").size(1280, 1024).watermark(
Positions.BOTTOM_RIGHT,
ImageIO.read(new File("E:\\图片\\watermark.png")), 0.5f)
.outputQuality(0.8f).toFile(
"E:\\图片\\image_watermark_bottom_right.jpg");
Thumbnails.of("E:\\图片\\15.jpg").size(1280, 1024).watermark(
Positions.CENTER,
ImageIO.read(new File("E:\\图片\\watermark.png")), 0.5f)
.outputQuality(0.8f).toFile("E:\\图片\\image_watermark_center.jpg");
} /**
* 裁剪
*
* @throws IOException
*/
private void test6() throws IOException {
/**
* 图片中心400*400的区域
*/
Thumbnails.of("E:\\图片\\15.jpg").sourceRegion(Positions.CENTER, 400,
400).size(200, 200).keepAspectRatio(false).toFile(
"E:\\图片\\image_region_center.jpg");
/**
* 图片右下400*400的区域
*/
Thumbnails.of("E:\\图片\\15.jpg").sourceRegion(Positions.BOTTOM_RIGHT,
400, 400).size(200, 200).keepAspectRatio(false).toFile(
"E:\\图片\\image_region_bootom_right.jpg");
/**
* 指定坐标
*/
Thumbnails.of("E:\\图片\\15.jpg").sourceRegion(600, 500, 400, 400).size(
200, 200).keepAspectRatio(false).toFile(
"E:\\图片\\image_region_coord.jpg");
} /**
* 转化图像格式
*
* @throws IOException
*/
private void test7() throws IOException {
/**
* outputFormat(图像格式)
*/
Thumbnails.of("E:\\图片\\15.jpg").size(1280, 1024).outputFormat("png")
.toFile("E:\\图片\\image_1280x1024.png");
Thumbnails.of("E:\\图片\\15.jpg").size(1280, 1024).outputFormat("gif")
.toFile("E:\\图片\\image_1280x1024.gif");
} /**
* 输出到OutputStream
*
* @throws IOException
*/
private void test8() throws IOException {
/**
* toOutputStream(流对象)
*/
OutputStream os = new FileOutputStream(
"E:\\图片\\image_1280x1024_OutputStream.png");
Thumbnails.of("E:\\图片\\15.jpg").size(1280, 1024).toOutputStream(os);
} /**
* 输出到BufferedImage
*
* @throws IOException
*/
private void test9() throws IOException {
/**
* asBufferedImage() 返回BufferedImage
*/
BufferedImage thumbnail = Thumbnails.of("E:\\图片\\15.jpg").size(1280,
1024).asBufferedImage();
ImageIO.write(thumbnail, "jpg", new File(
"E:\\图片\\image_1280x1024_BufferedImage.jpg"));
} }

需要jar包:thumbnailator-0.4.2-all.jar

java图片处理的更多相关文章

  1. Atitit.java图片图像处理attilax总结

    Atitit.java图片图像处理attilax总结 BufferedImage extends java.awt.Image 获取图像像素点 image.getRGB(i, lineIndex); ...

  2. Atitit.java图片图像处理attilax总结  BufferedImage extends java.awt.Image获取图像像素点image.getRGB(i, lineIndex); 图片剪辑/AtiPlatf_cms/src/com/attilax/img/imgx.javacutImage图片处理titit 判断判断一张图片是否包含另一张小图片 atitit 图片去噪算法的原理与

    Atitit.java图片图像处理attilax总结 BufferedImage extends java.awt.Image 获取图像像素点 image.getRGB(i, lineIndex); ...

  3. Java 图片提取RGB数组 RGBOfCharMaps (整理)

    package demo; /** * Java 图片提取RGB数组 RGBOfCharMaps (整理) * 声明: * 和ImageCombining配合使用的工具,这里是提取图片的R.G.B生成 ...

  4. Java 图片转换为字符图 CharMaps (整理)

      /* * Java 图片转换成字符图 CharMaps (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * * @(#)CharMaps.java 2014/1/16 * 1.这个一 ...

  5. 基于Java图片数据库Neo4j 3.0.0发布 全新的内部架构

    基于Java图片数据库Neo4j 3.0.0发布 全新的内部架构 Neo4j 3.0.0 正式发布,这是 Neo4j 3.0 系列的第一个版本.此版本对内部架构进行了全新的设计;提供给开发者更强大的生 ...

  6. java图片上传(mvc)

    最近有开始学起了java,好久没写文章了,好久没来博客园了.最近看了看博客园上次写的图片上传有很多人看,今天在一些篇关于java图片上传的.后台接收用的是mvc.不墨迹了,直接上图. 先看目录结构.i ...

  7. simpleImageTool又纯java图片水印、缩放工具

    simpleImageTool又一个简单.好用的图片格式转换.缩放水印叠加等功能的纯Java图片工具库. simpleImageTool的由来,近期需要用到图片处理,通过网上的图片流直接进行缩放水印叠 ...

  8. Java 图片处理解决方案:ImageMagick 快速入门

    一.ImageMagick介绍 ImageMagick是一个免费的创建.编辑.合成图片的软件,可以实现图片切割.颜色替换.图片缩略图.图片水印等各种效果.ImageMagick是免费开源软件,支持大多 ...

  9. java图片处理开源框架

    java图片处理开源框架 以前一直不明白,java开源框架什么意思,搜集资料得出以下结论 其实java框架可以理解为一个工具或者一个插件,将一个公用的.常用的技术封装起来,处理一些基础的.繁琐的问题. ...

  10. Java图片加文字水印

    Java图片加文字水印 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.I ...

随机推荐

  1. Tableau

    http://tableau.analyticservice.net/desktop.html

  2. SQL Server中的分页

    sqlserver2000时的分页思路 .分页查询时,首先将数据排序 select * from MyStudent order by fid desc .取第一页数据 * from MyStuden ...

  3. Android 常用UI控件之TabHost(5)Tab栏在底部且在最上层也不盖tab页

    tab栏在底部 <TabHost android:id="@android:id/tabhost" android:layout_width="match_pare ...

  4. Nginx+Tomcat+Terracotta的Web服务器集群实做

    1.准备工作两个Linux服务器,可以用VMware装一个,然后配置好再克隆一个,修改IP即可.Host1:192.168.0.79Host2:192.168.0.80先配置好jdk1.6.0和tom ...

  5. linux chmod 命令详解(转)

    Ubuntu下修改目录权限需要先用 sudo 来获得管理员权限,格式如下: sudo chmod 600 ××× (只有所有者有读和写的权限)sudo chmod 644 ××× (所有者有读和写的权 ...

  6. [JS前端开发] js/jquery控制页面动态加载数据 滑动滚动条自动加载事件

    页面滚动动态加载数据,页面下拉自动加载内容 相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多 有手机的相信都见过这样的效果:进入qq空间,向下拉动空 ...

  7. 经典SQL语句大全_主外键_约束

    一.基础(建表.建约束.关系) 约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整 ...

  8. mexopencv问题:Invalid MEX file GLIBCXX_3.4.15 error

    参考:http://blog.sina.com.cn/s/blog_74112f030101cmxt.html root@debian-yuliyang:/opt/matlab/sys/os/glnx ...

  9. Flume 与Kafka区别

    今天开会讨论日志处理为什么要同时使用Flume和Kafka,是否可以只用Kafka 不使用Flume?当时想到的就只用Flume的接口多,不管是输入接口(socket 和 文件)以及输出接口(Kafk ...

  10. Ubuntu firefox falsh

    Ubuntu下为Firefox安装Adobe Flash Player   使用环境:     OS:Ubuntu 12.04 LTS     Browser: Firefox 12.0     Ad ...