`
- 浏览:
978187 次
- 性别:
- 来自:
山西
-
- 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
相关推荐
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()`方法,传入原图像、...
在开发Web应用时,图片上传是一项常见的功能...以上代码示例展示了使用Java Imaging API进行图片旋转的基本步骤。实际应用中,你需要根据具体需求选择合适的方法和技术,确保图片上传的完整流程都能正确处理旋转问题。
本文将深入探讨如何使用Java实现图片旋转功能,同时也会涉及到滑动条事件处理技术,使得用户可以自定义旋转角度。 首先,我们需要引入Java的图像处理库,即Java Advanced Imaging (JAI) API。JAI提供了丰富的图像...
在Java编程语言中,对图片进行180度旋转是一项常见的图像处理操作,这通常涉及到对像素数据的重新排列。以下是一些关于如何在Java中实现这个功能的关键知识点: 1. **Java AWT 和 Swing 图像处理库**: Java提供了...
### Java实现图片90°、180°、270°、360°旋转的知识点 在本文中,我们将深入探讨如何使用Java来实现图片的旋转功能,特别是90°、180°、270°以及360°的旋转。通过解析给定的文件内容,我们可以了解到该功能...
在Java开发中,处理图像尤其是来自...以上就是使用Java处理iPhone拍照上传时的图片旋转和压缩问题的方法。在实际应用中,可能还需要考虑其他因素,如图片尺寸调整、色彩管理等,但这个工具类已经能解决大部分基本需求。
总之,Java绘图和图片旋转涉及到`Graphics2D`类的使用,包括加载和保存图像、创建`Graphics2D`对象、设置旋转参数以及执行旋转操作。通过灵活运用这些方法,开发者可以实现各种复杂的图像处理需求。在实际应用中,...
以上就是使用Java实现图片旋转的基本流程。实际项目中可能需要考虑更多细节,如处理透明度、优化性能等。通过熟练掌握这些基础知识,你可以灵活地对图片进行各种操作,满足不同场景的需求。在提供的压缩包文件"codes...
"一个图片3D旋转方法" 根据给定的文件信息,我们可以总结出以下几个知识点: 1. 图像翻转动画效果的实现:通过继承Animation类,重写initialize和applyTransformation方法可以实现图片的3D旋转动画效果。 在...
用JAVA实现了图片的缩小和旋转,保证可用
JAVA编程主要用于对图片进行操作,包括图片的水平翻转,垂直翻转和180°旋转
本文中介绍的Java实现图片角度旋转的方法,不仅可以帮助开发者们实现图片旋转的功能,同时也能够帮助他们获取到旋转后图片的详细信息。这对于图像的进一步处理和分析都是十分有用的。例如,在某些图像识别或计算机...
这是一个java生成随即图片验证码,java图片压缩,java图片水印 ,java图片裁剪 ,java图片旋转 ,java图片放大缩小等工具类,里面有测试方法,欢迎使用!
在Java编程语言中,图像处理是一项常见的任务,涵盖了多种操作,如读取、保存、旋转以及缩放。本文将深入探讨如何使用Java实现这些几何变换,以满足图像处理的需求。 首先,我们需要导入处理图像所必需的Java库。最...
图片任意角度旋转是指将图片旋转到任意角度。使用Java中的Graphics2D类,可以通过AffineTransform类来实现图片的任意角度旋转。 在实现图片任意角度旋转时,需要使用Graphics2D类的rotate方法,并将旋转角度传递给...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...