java.awt.Graphics2D 图片缩放
关键字:java image thumbnail google
粗略demo:
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException; import javax.imageio.ImageIO; import org.junit.Test; public class ImageUtils { @Test
public void test1() throws IOException {
File file = new File("E:\\1.png"); ImageUtils.scale(file, 0.1, new File("E:\\2.jpg"));
ImageUtils.thumbnail(file, 100, new File("E:\\3.jpg"));
} /**
* 按比例缩放
*
* @param rawImage
* @param ratio
* @param saltImage
*
* @throws IOException
* */
public static void scale(File rawImage, double ratio, File saltImage) throws IOException {
BufferedImage rawBufferedImage = ImageIO.read(rawImage);
int width = (int) (rawBufferedImage.getWidth() * ratio);
int height = (int) (rawBufferedImage.getHeight() * ratio);
BufferedImage bi = getCompatibleImage(width, height);
Graphics2D g2d = bi.createGraphics();
double xScale = (double) width / rawBufferedImage.getWidth();
double yScale = (double) height / rawBufferedImage.getHeight();
AffineTransform at = AffineTransform.getScaleInstance(xScale, yScale);
g2d.drawRenderedImage(rawBufferedImage, at);
g2d.dispose();
ImageIO.write(bi, "jpg", saltImage);
} /**
* 按比例缩放至【最大边 = 指定pix】
*
* @param rawImage
* @param pixel
* @param saltImage
*
* @throws IOException
* */
public static void thumbnail(File rawImage, int pixel, File saltImage) throws IOException {
BufferedImage source = ImageIO.read(rawImage);
int width = source.getWidth();
int height = source.getHeight(); int l = width > height ? width : height; double ratio = (pixel * 1.0) / l; int w = (int) (width * ratio);
int h = (int) (height * ratio); BufferedImage bi = getCompatibleImage(w, h);
Graphics2D g2d = bi.createGraphics();
double xScale = (double) w / width;
double yScale = (double) h / height;
AffineTransform at = AffineTransform.getScaleInstance(xScale, yScale);
g2d.drawRenderedImage(source, at);
g2d.dispose();
ImageIO.write(bi, "jpg", saltImage);
} private static BufferedImage getCompatibleImage(int w, int h) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gd.getDefaultConfiguration();
BufferedImage image = gc.createCompatibleImage(w, h);
return image;
} }
java.awt.Graphics2D 图片缩放的更多相关文章
- Java基础 awt Graphics2D 生成矩形图片并向内写入字符串
JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ...
- Java基础 awt Graphics2D 生成矩形图片并向其中画一条直线
JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ...
- java图片缩放
package com.rubekid.springmvc.utils; import java.awt.AlphaComposite; import java.awt.Graphics2D; imp ...
- java中 awt Graphics2D
Graphics2D ,Graphics 类,提供了对几何形状.坐标转换.颜色管理和文本布局更为复杂的控制.它是用于在 Java(tm) 平台上呈现二维形状.文本和图像的基础类.验证码生成可以用到此类 ...
- Java实现打印功能-AWT Graphics2D
Java实现打印功能 用java实现打印,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Gra ...
- openseadragon.js与deep zoom java实现艺术品图片展示
openseadragon.js 是一款用来做图像缩放的插件,它可以用来做图片展示,做展示的插件很多,也很优秀,但大多数都解决不了图片尺寸过大的问题. 艺术品图像展示就是最简单的例子,展示此类图片一般 ...
- java.imageIo给图片添加水印
最近项目在做一个商城项目, 项目上的图片要添加水印①,添加图片水印;②:添加文字水印; 一下提供下个方法,希望大家可以用得着: package com.blogs.image; import java ...
- 不涉及框架纯java实现将图片裁成圆形
package com.wtsrui.utils;import java.awt.Color; import sun.misc.BASE64Encoder;import java.awt.Graph ...
- java实现给图片添加水印
package michael.io.image; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.aw ...
随机推荐
- Hibernate保存Blob和Clob类型的数据
虽然非常不建议在数据库中保存Blob和Clob类型的数据,但真的要有这样的需求呢?这里记录一下使用Hibernate如何向数据库中保存Blob和Clob数据. Oracle和MySql在Blob类型上 ...
- ArraySort--冒泡排序、选择排序、插入排序工具类demo
public class ArraySort { private long[] a; private int nElems; public ArraySort(int max){ a=new long ...
- 数据库DRDS中间件介绍
DRDS/TDDL alibaba. Distributed Relational Database Service. 阿里分布式数据库DRDS的前身是淘宝分布式数据库层TDDL,大概在2012年的时 ...
- python装饰器注意事项
内容: 1.装饰器基本结构复习 2.装饰器注意事项 python装饰器详细内容:http://www.cnblogs.com/wyb666/p/8748102.html 1.装饰器基本结构复习 装饰器 ...
- C# 接口(Interface)
接口定义了所有类继承接口时应遵循的语法合同.接口定义了语法合同 "是什么" 部分,派生类定义了语法合同 "怎么做" 部分. 口定义了属性.方法和事件,这些都是接 ...
- C# StopWatch的BUG????
//BUG?????? //使用StopWatch测试运行时间 //两段测试A和B //测试结果受测试顺序影响,后测要比先测耗时长了许多 static void TestKeyIntStr() { v ...
- input子系统分析之二:数据结构
内核版本:3.9.5 1. input_dev,用来标识输入设备 struct input_dev { const char *name; const char *phys; const char * ...
- Android开发实战之拥有Material Design风格的折叠布局
关于折叠布局,也许你并不陌生,最新版的陌陌,或者一些其他的社交APP都有一个折叠布局.折叠布局,让我们的APP更加具有交互性,同时也更加美观,先来展示一下效果图: 这是我个人做的一个APP主界面,可以 ...
- centOS系统安装MySQL教程
如何卸载CentOS系统自带MySQL 1.1. 查找以前是否装有MySQL 命令:rpm -qa|grep -i mysql 可以看到如下图的所示:(图片来自互联网,仅做参考使用) 说明系统自带: ...
- 配置jdk和tomcat的环境变量
一.1,新建变量名:JAVA_HOME,变量值:d:\Program Files\Java\jdk1.7.0 2,打开PATH,添加变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jr ...