java图片处理
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图片处理的更多相关文章
- Atitit.java图片图像处理attilax总结
Atitit.java图片图像处理attilax总结 BufferedImage extends java.awt.Image 获取图像像素点 image.getRGB(i, lineIndex); ...
- 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); ...
- Java 图片提取RGB数组 RGBOfCharMaps (整理)
package demo; /** * Java 图片提取RGB数组 RGBOfCharMaps (整理) * 声明: * 和ImageCombining配合使用的工具,这里是提取图片的R.G.B生成 ...
- Java 图片转换为字符图 CharMaps (整理)
/* * Java 图片转换成字符图 CharMaps (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * * @(#)CharMaps.java 2014/1/16 * 1.这个一 ...
- 基于Java图片数据库Neo4j 3.0.0发布 全新的内部架构
基于Java图片数据库Neo4j 3.0.0发布 全新的内部架构 Neo4j 3.0.0 正式发布,这是 Neo4j 3.0 系列的第一个版本.此版本对内部架构进行了全新的设计;提供给开发者更强大的生 ...
- java图片上传(mvc)
最近有开始学起了java,好久没写文章了,好久没来博客园了.最近看了看博客园上次写的图片上传有很多人看,今天在一些篇关于java图片上传的.后台接收用的是mvc.不墨迹了,直接上图. 先看目录结构.i ...
- simpleImageTool又纯java图片水印、缩放工具
simpleImageTool又一个简单.好用的图片格式转换.缩放水印叠加等功能的纯Java图片工具库. simpleImageTool的由来,近期需要用到图片处理,通过网上的图片流直接进行缩放水印叠 ...
- Java 图片处理解决方案:ImageMagick 快速入门
一.ImageMagick介绍 ImageMagick是一个免费的创建.编辑.合成图片的软件,可以实现图片切割.颜色替换.图片缩略图.图片水印等各种效果.ImageMagick是免费开源软件,支持大多 ...
- java图片处理开源框架
java图片处理开源框架 以前一直不明白,java开源框架什么意思,搜集资料得出以下结论 其实java框架可以理解为一个工具或者一个插件,将一个公用的.常用的技术封装起来,处理一些基础的.繁琐的问题. ...
- Java图片加文字水印
Java图片加文字水印 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.I ...
随机推荐
- tortoisesvn › prefer local prefer repository
tortoisesvn › prefer local prefer repository
- win8 hyper-v 禁用不必卸载虚拟机
转载:http://tylzwp.blogbus.com/logs/232938121.html 禁用hyperv的目的是使用之前在用的VMware的虚拟机,不必重新处理一遍. 具体操作: 1确报之前 ...
- javascript里的post和get有什么区别
FORM中的get post方法区别Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法.二者主要区别如下: 1.Get是用来从服务器上获得数据,而Post ...
- JXL获取excel批注
/** * Jxl.jar(2.6.12) * @author lmiky * @date 2011-11-26 */ public class JxlTest { /** * 测试获取批注 * @a ...
- jQuery Mobile 入门教程
你每天都会对着它讲话,和它玩游戏,用它看新闻——没错,它就是你裤兜里的智能手机.android,黑莓还是iphone?为了让你清楚意识到究竟哪些才算是智能手机,我在下面总结了一个智能手机系统/设备的列 ...
- Tomcat配置JNDI数据源
经过3个多小时的努力,配置JNDI数据源(主要是通过DBCP连接池)终于搞定-还是Tomcat官方的说明好,不过全是英文的,大概还看得懂.百度上那么花花绿绿的太多了,一个也没成功!...本例使用的数据 ...
- TortoiseSVN中分支和合并实践
使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并 ...
- WPF 中资源路径的问题
WPF 中资源路径的问题 1. 引用当前工程的资源(注意xxxx.png的build action 应设置为Resource 或Embedded Resource) <ImageBrush Im ...
- Live555研究之二Sleep实现
Live555通过一个while循环来不断读取socket,判断是否有连接进来,但是Live555并没有使用Sleep函数来让线程休眠多少毫秒来降低CPU占用率.Live555是通过select函数来 ...
- linu、C语言、计算机基础教程
Linux操作系统入门教程:http://see.xidian.edu.cn/cpp/linux/ 鸟哥的linux私房菜:http://vbird.dic.ksu.edu.tw/ 计算机操作系统教程 ...