`
- 浏览:
48765 次
- 性别:
- 来自:
福建
-
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)));
}
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绘图 图片旋转 实例代码java绘图 图片旋转 实例代码
处理前后台图片旋转问题,前台处理旋转图片展示问题。后台处理旋转图片处理后保存到服务器和数据库问题。
Java实现图片旋转的代码,可以垂直和水平旋转图片,可自定义旋转角度,垂直反转图片的示例效果如截图所示。实现原理是将载入到图像缓冲区的图片数据反转,效果还可以。
java 图片压缩 iphone拍照上传旋转问题处理,压缩工具类 首先导入jar 包,通过imgxz获取图片是否旋转属性,在调用旋转方法,旋转过来,然后在进行压缩
根据例子修改的一个效果很好看的图片旋转动画效果。
用JAVA实现了图片的缩小和旋转,保证可用
这是一个java生成随即图片验证码,java图片压缩,java图片水印 ,java图片裁剪 ,java图片旋转 ,java图片放大缩小等工具类,里面有测试方法,欢迎使用!
java 实现 图片90° 180° 270° 360°旋转
Java实现图片旋转功能,基本上是图像缓冲区、过滤图像,重载容器,重绘组件,仿射变换对象,创建仿射变换操作对象,让用于显示的缓冲区图像指向过滤后的图像等的操作,可了解下Java如何处理图像数据的。部分代码如下...
主要为大家详细介绍了java实现图片角度旋转并获得图片信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
用双线性插值算法估计出象素值,对于超出图像范围的象素返回255
java代码 通过地址替换本地/服务器图片 进行旋转 水平翻转类的功能
java 可对图片进行正负角旋转图片