package com.gt.qtel.mb.util;
import java.awt.Color;
import java.awt.Graphics;
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 RotateImageDegreesUtil {
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;
}
}
/***Invoked***/
InputStream fileInputStream =multipartFile.getInputStream();
BufferedImage bufferedimage = ImageIO.read(fileInputStream);
InputStream inputStream = RotateImageDegreesUtil.rotateImg(bufferedimage, rotate, null);
分享到:
相关推荐
JFrame frame = new JFrame("Java图片旋转"); JSlider slider = new JSlider(0, 360); JLabel imageLabel = new JLabel(); frame.add(slider, BorderLayout.NORTH); frame.add(imageLabel, BorderLayout.CENTER); `...
在Java编程语言中,处理图像是一项常见的任务,...以上就是Java图片旋转的主要技术点,通过理解并运用这些知识点,开发者可以轻松地实现图片的旋转操作。提供的压缩包文件中的代码和注释将有助于进一步深入理解和实践。
这个“java图片旋转处理”包提供了方便的方法,使开发者能够轻松地对图片进行旋转。为了理解这些方法的工作原理以及如何使用它们,我们需要了解一些核心概念和技术。 首先,Java中的图像处理主要通过Java AWT...
1. **图片旋转**: - 使用Java 2D API中的`AffineTransform`类可以实现图片的旋转。首先创建一个`AffineTransform`对象,设置旋转角度(以弧度为单位),然后使用`Graphics2D`的`drawImage()`方法,传入原图像、...
本文将深入探讨如何使用Java实现图片旋转功能,同时也会涉及到滑动条事件处理技术,使得用户可以自定义旋转角度。 首先,我们需要引入Java的图像处理库,即Java Advanced Imaging (JAI) API。JAI提供了丰富的图像...
在开发Web应用时,图片上传是一项常见的功能...以上代码示例展示了使用Java Imaging API进行图片旋转的基本步骤。实际应用中,你需要根据具体需求选择合适的方法和技术,确保图片上传的完整流程都能正确处理旋转问题。
在Java编程语言中,对图片进行180度旋转是一项常见的图像处理操作,这通常涉及到对像素数据的重新排列。以下是一些关于如何在Java中实现这个功能的关键知识点: 1. **Java AWT 和 Swing 图像处理库**: Java提供了...
总之,Java绘图和图片旋转涉及到`Graphics2D`类的使用,包括加载和保存图像、创建`Graphics2D`对象、设置旋转参数以及执行旋转操作。通过灵活运用这些方法,开发者可以实现各种复杂的图像处理需求。在实际应用中,...
### Java实现图片90°、180°、270°、360°旋转的知识点 在本文中,我们将深入探讨如何使用Java来实现图片的旋转功能,特别是90°、180°、270°以及360°的旋转。通过解析给定的文件内容,我们可以了解到该功能...
在Java开发中,处理图像尤其是来自...以上就是使用Java处理iPhone拍照上传时的图片旋转和压缩问题的方法。在实际应用中,可能还需要考虑其他因素,如图片尺寸调整、色彩管理等,但这个工具类已经能解决大部分基本需求。
以上就是使用Java实现图片旋转的基本流程。实际项目中可能需要考虑更多细节,如处理透明度、优化性能等。通过熟练掌握这些基础知识,你可以灵活地对图片进行各种操作,满足不同场景的需求。在提供的压缩包文件"codes...
"一个图片3D旋转方法" 根据给定的文件信息,我们可以总结出以下几个知识点: 1. 图像翻转动画效果的实现:通过继承Animation类,重写initialize和applyTransformation方法可以实现图片的3D旋转动画效果。 在...
用JAVA实现了图片的缩小和旋转,保证可用
JAVA编程主要用于对图片进行操作,包括图片的水平翻转,垂直翻转和180°旋转
图片角度旋转是指将图片旋转一定角度,以便更好地展示图片的内容。在Java中,我们可以使用Java的图像处理库对图片进行旋转操作。具体来说,我们可以使用BufferedImage类来表示图片,然后使用Graphics2D类来进行旋转...
这是一个java生成随即图片验证码,java图片压缩,java图片水印 ,java图片裁剪 ,java图片旋转 ,java图片放大缩小等工具类,里面有测试方法,欢迎使用!
在Java编程语言中,图像处理是一项常见的任务,涵盖了多种操作,如读取、保存、旋转以及缩放。本文将深入探讨如何使用Java实现这些几何变换,以满足图像处理的需求。 首先,我们需要导入处理图像所必需的Java库。最...
Java实现图片旋转功能,基本上是图像缓冲区、过滤图像,重载容器,重绘组件,仿射变换对象,创建仿射变换操作对象,让用于显示的缓冲区图像指向过滤后的图像等的操作,可了解下Java如何处理图像数据的。部分代码如下...
图片任意角度旋转是指将图片旋转到任意角度。使用Java中的Graphics2D类,可以通过AffineTransform类来实现图片的任意角度旋转。 在实现图片任意角度旋转时,需要使用Graphics2D类的rotate方法,并将旋转角度传递给...