`
- 浏览:
933541 次
- 性别:
- 来自:
山西
-
- import java.awt.Color;
- import java.awt.Graphics2D;
- import java.awt.Transparency;
- import java.awt.geom.AffineTransform;
- import java.awt.image.AffineTransformOp;
- import java.awt.image.BufferedImage;
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
-
- import javax.imageio.ImageIO;
- import javax.imageio.stream.ImageOutputStream;
-
- public class ImageChange {
-
- public static InputStream rotateImg(BufferedImage image, int degree, Color bgcolor) throws IOException {
-
- int iw = image.getWidth();//原始图象的宽度
- int ih = image.getHeight();//原始图象的高度
- int w = 0;
- int h = 0;
- int x = 0;
- int y = 0;
- degree = degree % 360;
- if (degree < 0)
- degree = 360 + degree;//将角度转换到0-360度之间
- double ang = Math.toRadians(degree);//将角度转为弧度
-
- /**
- *确定旋转后的图象的高度和宽度
- */
-
- if (degree == 180 || degree == 0 || degree == 360) {
- w = iw;
- h = ih;
- } else if (degree == 90 || degree == 270) {
- w = ih;
- h = iw;
- } else {
- //int d = iw + ih;
- //w = (int) (d * Math.abs(Math.cos(ang)));
- //h = (int) (d * Math.abs(Math.sin(ang)));
- double cosVal = Math.abs(Math.cos(ang));
- double sinVal = Math.abs(Math.sin(ang));
- w = (int) (sinVal*ih) + (int) (cosVal*iw);
- h = (int) (sinVal*iw) + (int) (cosVal*ih);
- }
-
- x = (w / 2) - (iw / 2);//确定原点坐标
- y = (h / 2) - (ih / 2);
- BufferedImage rotatedImage = new BufferedImage(w, h, image.getType());
- Graphics2D gs = (Graphics2D)rotatedImage.getGraphics();
- if(bgcolor==null){
- rotatedImage = gs.getDeviceConfiguration().createCompatibleImage(w, h, Transparency.TRANSLUCENT);
- }else{
- gs.setColor(bgcolor);
- gs.fillRect(0, 0, w, h);//以给定颜色绘制旋转后图片的背景
- }
-
- AffineTransform at = new AffineTransform();
- at.rotate(ang, w / 2, h / 2);//旋转图象
- at.translate(x, y);
- AffineTransformOp op = new AffineTransformOp(at, AffineTransformOp.TYPE_BICUBIC);
- op.filter(image, rotatedImage);
- image = rotatedImage;
-
- ByteArrayOutputStream byteOut= new ByteArrayOutputStream();
- ImageOutputStream iamgeOut = ImageIO.createImageOutputStream(byteOut);
-
- ImageIO.write(image, "png", iamgeOut);
- InputStream inputStream = new ByteArrayInputStream(byteOut.toByteArray());
-
- return inputStream;
- }
-
-
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Java图片旋转,使用Java语言编写程序,旋转图像文件,用到了滑动条jSlider事件处理技术,得到旋转角度(弧度制)
内含java图片旋转的代码和注释
Java图片旋转,使用Java语言编写程序,旋转图像文件,期间用到了滑动条jSlider事件处理技术,得到旋转角度(弧
java图片旋转处理方法包,直接导入,调用方法即可,具体见博客中的解说; java图片旋转处理方法包,直接导入,调用方法即可,具体见博客中的解说
java对图片进行旋转级翻转镜像操作源码,简单易懂!!!
java 将图片进行180度旋转 java 将图片进行180度旋转 java 将图片进行180度旋转
处理前后台图片旋转问题,前台处理旋转图片展示问题。后台处理旋转图片处理后保存到服务器和数据库问题。
java 图片压缩 iphone拍照上传旋转问题处理,压缩工具类 首先导入jar 包,通过imgxz获取图片是否旋转属性,在调用旋转方法,旋转过来,然后在进行压缩
java绘图 图片旋转 实例代码java绘图 图片旋转 实例代码
Java实现图片旋转的代码,可以垂直和水平旋转图片,可自定义旋转角度,垂直反转图片的示例效果如截图所示。实现原理是将载入到图像缓冲区的图片数据反转,效果还可以。
根据例子修改的一个效果很好看的图片旋转动画效果。
用JAVA实现了图片的缩小和旋转,保证可用
这是一个java生成随即图片验证码,java图片压缩,java图片水印 ,java图片裁剪 ,java图片旋转 ,java图片放大缩小等工具类,里面有测试方法,欢迎使用!
java 实现 图片90° 180° 270° 360°旋转
主要为大家详细介绍了java实现图片角度旋转并获得图片信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
java代码 通过地址替换本地/服务器图片 进行旋转 水平翻转类的功能
Java实现图片旋转功能,基本上是图像缓冲区、过滤图像,重载容器,重绘组件,仿射变换对象,创建仿射变换操作对象,让用于显示的缓冲区图像指向过滤后的图像等的操作,可了解下Java如何处理图像数据的。部分代码如下...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...
java 可对图片进行正负角旋转图片