- 浏览: 212504 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
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 3697一、安装JDK 1、安装jdk-7u79-linux-x64. ... -
linux下安装swftools和openOffice
2015-07-03 17:09 749最近公司实现一个仿豆丁网百度文库阅读器的功能,需要用到两个软件 ... -
redis Java develop
2014-10-23 18:01 6611. http://javacrazyer.iteye.com ... -
验证码 原理 破解
2014-08-20 17:52 622验证码 原理 破解 reference: http://bl ... -
HttpClient 学习经验
2014-08-14 11:01 675HttpClient学习经验 HttpCl ... -
P2P resources
2013-12-09 18:24 9791.P2P导航收录 http://www.p2peye.com ... -
运用加密技术保护Java源代码
2013-06-08 08:38 1114运用加密技术保护Java源代码 http://www.ibm ... -
log4j.properties配置详解
2013-03-15 17:00 0log4j.properties配置详解 Log4J的配置文 ... -
Struts 2 studing
2012-12-28 17:28 7401. Struts 2的基石——拦截器(Interceptor ... -
J2EE项目异常处理
2012-12-26 11:08 1113J2EE项目异常处理 为什 ... -
如何将基于 Struts、Spring 和 Hibernate 的应用从 Tomcat 迁移到 WebSphere Application Server
2012-12-21 10:28 1193引言 现在很多的企业都 ... -
详解spring事务属性
2012-12-20 10:22 842Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我 ... -
Java List Copy,Remove容易出现的问题
2012-11-15 03:08 1034懒程序员,在代码越写越多的情况下,总想着使用把代码精简一 ... -
MySQL---ORACLE序列解决方案
2012-11-13 00:55 1197MySQL自增长与Oracle序列的区别: 自增长只能用于表 ... -
使用反射循环查找所有父类属性
2012-11-02 01:28 2137使用反射循环查找所有父类属性 ... -
list,set,map,数组间的相互转换
2012-11-02 01:25 962list,set,map,数 ... -
java bean自动进行rowMapper or handler的类
2012-10-20 03:14 1331一般情况下在进行jdbc编程的时候避免不了的要写n多的bean ... -
URL encoding 乱码处理
2012-10-10 15:53 892搞了两三天的乱码处理,试了很多方法,过滤器啊,编码转换啊,试来 ... -
QR Code
2012-06-12 12:29 01. 在线生成QR Code 网站 http://www. ... -
convert BufferedImage to byte[]
2012-06-12 11:26 1239How to convert BufferedImage to ...
相关推荐
5. **随机数生成**:抽奖结果的随机性需要通过Java的Random类来实现,生成一个随机角度让指针停在奖品区域。 6. **对话框(Dialog)显示**:当指针停止后,需要弹出一个对话框告诉用户获得了几等奖。Java的...
这些算法用于在新坐标系中生成新的像素值,以确保旋转后的图像质量不受影响。 2. **近似旋转**: 对于性能要求较高的应用,可能会采用近似旋转,牺牲部分图像质量以换取更快的计算速度。这种方法可能会导致边缘模糊...
本资源“安卓UI布局相关-动态生成任意张图片控件.zip”着重于动态创建图片控件,这对于需要根据运行时数据或用户操作来灵活调整界面的应用尤其重要。 动态生成图片控件的概念是基于安卓的View类和布局管理器,例如...
第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...
属性动画是安卓3.0(API Level 11)引入的新特性,它可以改变对象的任意属性并随着时间推移更新视图,而视图动画只改变显示效果,不改变对象的实际状态。在抽奖动画中,我们通常会用到属性动画,因为它可以实现更...
uCrop库提供了一个直观且易用的接口,允许用户以任意角度(通常支持90度、180度和270度)旋转图片。这涉及到Android的Matrix类和Bitmap类的使用,通过矩阵变换来实现图像的旋转。 其次,图片翻转是另一个实用特性,...
- 调用`Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height, Matrix matrix, boolean filter)`,使用合并后的Matrix创建旋转后的Bitmap。 5. **Matrix详解**: - Matrix提供了各种矩阵操作...
具体到Button动画,如果涉及到复杂的计算或者网络请求,比如加载动画图片资源,应当在子线程中进行,加载完成后通过post或者runOnUiThread方法回到主线程设置动画。以下是一个简单的例子: ```java new Thread(new ...
Libyuv支持90度、180度、270度的整数倍旋转,同时也支持任意角度的旋转,这对于处理设备方向变化或用户自定义旋转角度的情况非常有用。 4. **格式转换**: Libyuv支持多种图像格式的转换,包括但不限于YUV、NV12、...
- **定义**: 由 Android 开发工具自动生成并维护,通常包含编译过程中生成的一些类文件。 - **注意**: 不应手动修改 Gen 目录下的文件,特别是 R.java 文件,它是用来存储资源 ID 的。 **1.3 R.java** - **定义**: ...
在开发过程中,ImageMagick的API可以用来实现诸如图片上传后的自动化处理、批量转换、生成缩略图等功能。对于Web开发者来说,它能有效地提高网站的图像处理效率,尤其是对于那些需要大量处理用户上传图片的应用来说...