- 浏览: 204840 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
jongde1:
Axure太难学了,分享mockplus工具,有兴趣可以去了解 ...
Axure RP 原型设计工具 -
di1984HIT:
这里面提到了好几种解决办法。
Spring AOP对日志记录、Exception日志记录 -
di1984HIT:
学习一下。
spring struts2 零配置 -
di1984HIT:
不错,不错啊
Struts2防止表单重复提交 -
di1984HIT:
kettle怎么样啊。
Kettle初探
JAVA 按任意角度旋转图片,并生成新的旋转后图片
另附上生成新的图片
import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.awt.image.BufferedImage; public class ImageUtil { public static BufferedImage rotateImage(final BufferedImage bufferedimage, final int angle){ int width = bufferedimage.getWidth(); int height = bufferedimage.getHeight(); BufferedImage dstImage = null; AffineTransform affineTransform = new AffineTransform(); if (angle == 180) { affineTransform.translate(width, height); dstImage = new BufferedImage(width, height, bufferedimage.getType()); } else if (angle == 90) { affineTransform.translate(height, 0); dstImage = new BufferedImage(height, width, bufferedimage.getType()); } else if (angle == 270) { affineTransform.translate(0, width); dstImage = new BufferedImage(height, width, bufferedimage.getType()); } affineTransform.rotate(java.lang.Math.toRadians(angle)); AffineTransformOp affineTransformOp = new AffineTransformOp( affineTransform, AffineTransformOp.TYPE_NEAREST_NEIGHBOR); return affineTransformOp.filter(bufferedimage, dstImage); } }
另附上生成新的图片
import java.awt.Graphics2D; import java.awt.Image; import java.awt.MediaTracker; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Iterator; import javax.imageio.IIOImage; import javax.imageio.ImageIO; import javax.imageio.ImageTypeSpecifier; import javax.imageio.ImageWriteParam; import javax.imageio.ImageWriter; import javax.imageio.stream.ImageOutputStream; import javax.swing.JPanel; public class RotateImage extends JPanel { Image image; BufferedImage bufImage; // 用于显示的缓冲区图像 BufferedImage originalBufImage; // 原始缓冲区图像 Graphics2D bufImageG; // 缓冲区图像的图形环境 public void loadImage(String fileName) { image = this.getToolkit().getImage(fileName); // 取得图像 MediaTracker mt = new MediaTracker(this); // 实例化媒体加载器 mt.addImage(image, 0); // 增加图像到加载器中 try { mt.waitForAll(); // 等待图片加载 } catch (Exception ex) { ex.printStackTrace(); // 输出出错信息 } originalBufImage = new BufferedImage(image.getWidth(this), image .getHeight(this), BufferedImage.TYPE_INT_ARGB); // 创建原始缓冲区图像 bufImage = originalBufImage; bufImageG = bufImage.createGraphics(); // 创建bufImage的图形环境 bufImageG.drawImage(image, 0, 0, this); // 传输源图像数据到缓冲区图像中 } // 过滤图像 public void ratoteImage(int angle) { if (bufImage == null) return; // 如果bufImage为空则直接返回 BufferedImage filteredBufImage = new BufferedImage( image.getWidth(this), image.getHeight(this), BufferedImage.TYPE_INT_RGB); // 过滤后的图像 AffineTransform transform = new AffineTransform(); // 仿射变换对象 transform.rotate(java.lang.Math.toRadians(angle), image.getWidth(this) / 2, image.getHeight(this) / 2); // 旋转图像 AffineTransformOp imageOp = new AffineTransformOp(transform, null);// 创建仿射变换操作对象 imageOp.filter(originalBufImage, filteredBufImage);// 过滤图像,目标图像在filteredBufImage bufImage = filteredBufImage; // 让用于显示的缓冲区图像指向过滤后的图像 drawImg(bufImage); } public void drawImg(BufferedImage image) { ImageWriter writer = null; ImageTypeSpecifier type = ImageTypeSpecifier .createFromRenderedImage(image); Iterator iter = ImageIO.getImageWriters(type, "jpg"); if (iter.hasNext()) { writer = (ImageWriter) iter.next(); } if (writer == null) { return; } IIOImage iioImage = new IIOImage(image, null, null); ImageWriteParam param = writer.getDefaultWriteParam(); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionQuality((float) ((1) / 10.0)); ImageOutputStream outputStream; try { outputStream = ImageIO .createImageOutputStream(new File("test.jpg")); writer.setOutput(outputStream); writer.write(null, iioImage, param); } catch (IOException e) { e.printStackTrace(); } } /** * @param args */ public static void main(String[] args) { RotateImage rotateImg = new RotateImage(); rotateImg.loadImage("bm.jpg"); // 装载图片 rotateImg.ratoteImage(90); } }
发表评论
-
Linux下部署多个Tomcat多个域名
2015-12-12 19:02 3644一、安装JDK 1、安装jdk-7u79-linux-x64. ... -
linux下安装swftools和openOffice
2015-07-03 17:09 697最近公司实现一个仿豆丁网百度文库阅读器的功能,需要用到两个软件 ... -
redis Java develop
2014-10-23 18:01 6021. http://javacrazyer.iteye.com ... -
验证码 原理 破解
2014-08-20 17:52 579验证码 原理 破解 reference: http://bl ... -
HttpClient 学习经验
2014-08-14 11:01 596HttpClient学习经验 HttpCl ... -
P2P resources
2013-12-09 18:24 9231.P2P导航收录 http://www.p2peye.com ... -
运用加密技术保护Java源代码
2013-06-08 08:38 1066运用加密技术保护Java源代码 http://www.ibm ... -
log4j.properties配置详解
2013-03-15 17:00 0log4j.properties配置详解 Log4J的配置文 ... -
Struts 2 studing
2012-12-28 17:28 7051. Struts 2的基石——拦截器(Interceptor ... -
J2EE项目异常处理
2012-12-26 11:08 1041J2EE项目异常处理 为什 ... -
如何将基于 Struts、Spring 和 Hibernate 的应用从 Tomcat 迁移到 WebSphere Application Server
2012-12-21 10:28 1140引言 现在很多的企业都 ... -
详解spring事务属性
2012-12-20 10:22 779Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我 ... -
Java List Copy,Remove容易出现的问题
2012-11-15 03:08 967懒程序员,在代码越写越多的情况下,总想着使用把代码精简一 ... -
MySQL---ORACLE序列解决方案
2012-11-13 00:55 1157MySQL自增长与Oracle序列的区别: 自增长只能用于表 ... -
使用反射循环查找所有父类属性
2012-11-02 01:28 2090使用反射循环查找所有父类属性 ... -
list,set,map,数组间的相互转换
2012-11-02 01:25 919list,set,map,数 ... -
java bean自动进行rowMapper or handler的类
2012-10-20 03:14 1253一般情况下在进行jdbc编程的时候避免不了的要写n多的bean ... -
URL encoding 乱码处理
2012-10-10 15:53 849搞了两三天的乱码处理,试了很多方法,过滤器啊,编码转换啊,试来 ... -
QR Code
2012-06-12 12:29 01. 在线生成QR Code 网站 http://www. ... -
convert BufferedImage to byte[]
2012-06-12 11:26 1204How to convert BufferedImage to ...
相关推荐
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java...
第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置...
第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7...
Java范例开发大全(全书源程序),目录如下: 第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境...
第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java...
支持水印透明度和旋转角度的任意调整,加注效果更理想; 支持精确定位、平铺和填充等三种模式的水印加注方式。 用户不仅可以自定义文字或图片作为水印,字型的大小、颜色、位置等等参数都可以由用户自由的设定; ...
ANDROID 的推出后可能影响的产业包括移动电信业,软件开发业,手机制造业,在以消费者为核心的状 态 。 对消费者的影响 � 高档手机选择面增加。 � A ndroid 在设计初期就考虑了与现其有业务的融合,改变以往从...
向系统分区写入新的主引导记录可能破坏分区表并导致分区无法访问。 format 将指定的驱动器格式化为指定的文件系统。含有下列参数的 format 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同...