/**
* 顺时针图片旋转的方法
*
* @param request
* @param response
* @return
* @author julong 2013-8-29 下午09:12:47
*/
public void pictureRotationClockwise(HttpServletRequest request,HttpServletResponse response,PhotoTemp2 pt2){
response.setContentType("text/html; charset=GBK");
//获取smid
String smid = request.getParameter("smid");
//System.out.println(smid);
//获取原图片对象
PhotoTemp2 photoTemp2 = this.photoTemp2Service.getZp(smid);
//获取图片对象
byte[] imgBtye = photoTemp2.getZp();
//获取输入字节流
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(imgBtye);
//将byte数组转换为image对象 访问图像缓冲区的图像对象
BufferedImage bufferedImage;
PrintWriter out = null ;
ExcuteResult result;
try {
//获得图片对象
bufferedImage = ImageIO.read(byteArrayInputStream);
//获得当前的图片的高度和宽度
int thisHeight = bufferedImage.getHeight();
int thisWidth = bufferedImage.getWidth();
BufferedImage dstImage = null;
//创建图片矩阵向量旋转对象类表示
//2D 仿射变换,它执行从 2D 坐标到其他 2D 坐标的线性映射,保留了线的“直线性”和“平行性”。可以使用一系列平移、缩放、翻转、旋转和剪切来构造仿射变换。
AffineTransform affineTransform = new AffineTransform();
//设置图像平移的距离
//thisHeight - 坐标在 X 轴方向上平移的距离
//0 - 坐标在 Y 轴方向上平移的距离
affineTransform.translate(thisHeight, 0);
//创建一个新的画布
//旋转后 thisHeight图像的宽度 thisWidth 图像的高度
dstImage = new BufferedImage(thisHeight, thisWidth, bufferedImage.getType());
//设置图片旋转的角度 是X轴正半轴 向Y轴正半轴 旋转的角度
affineTransform.rotate(java.lang.Math.toRadians(90));
//执行源图像的线性2D映射
AffineTransformOp affineTransformOp = new AffineTransformOp(affineTransform,null);
//转换图片对象为bufferedImage对象
affineTransformOp.filter(bufferedImage, dstImage);
// 创建字节输入流
ByteArrayOutputStream byteArrayOutputStream =new ByteArrayOutputStream();
ImageIO.write(dstImage, "JPEG", byteArrayOutputStream);
//获取新图片的数组
byte[] newImg = byteArrayOutputStream.toByteArray();
photoTemp2.setZp(newImg);
//执行更新操作
result = this.photoTemp2Service.updateDrvPhotoTempZP(photoTemp2);
out = response.getWriter();
//System.err.println(result.getReturnCode());
//判断数据库是否更新成功如果成功则执行刷新的方法
if(1==result.getReturnCode()){
out.println("<script style='javascript/text'>parent.rotationBack();</script>");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch(Exception e){
e.printStackTrace();
}finally{
if(out!=null)out.close();
}
//return new ModelAndView("dagl/lsda_drv_imgList");
}
/**
* 图片逆时针旋转的方法
*
* @param request
* @param response
* @param pt2
* @author julong 2013-8-30 下午03:26:27
*/
public void pictureRotationAntiClockwise(HttpServletRequest request,HttpServletResponse response,PhotoTemp2 pt2){
response.setContentType("text/html; charset=GBK");
//System.out.println("--------------------------------------------------------------------------");
//获取smid
String smid = request.getParameter("smid");
//System.out.println(smid);
//获取原图片对象
PhotoTemp2 photoTemp2 = this.photoTemp2Service.getZp(smid);
//获取图片对象
byte[] imgBtye = photoTemp2.getZp();
//获取输入字节流
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(imgBtye);
//将byte数组转换为image对象 访问图像缓冲区的图像对象
BufferedImage bufferedImage;
PrintWriter out = null ;
ExcuteResult result;
try {
//获得图片对象
bufferedImage = ImageIO.read(byteArrayInputStream);
//获得当前的图片的高度和宽度
int thisHeight = bufferedImage.getHeight();
int thisWidth = bufferedImage.getWidth();
BufferedImage dstImage = null;
//创建图片矩阵向量旋转对象类表示
//2D 仿射变换,它执行从 2D 坐标到其他 2D 坐标的线性映射,保留了线的“直线性”和“平行性”。可以使用一系列平移、缩放、翻转、旋转和剪切来构造仿射变换。
AffineTransform affineTransform = new AffineTransform();
//设置图像平移的距离
//0 - 坐标在 X 轴方向上平移的距离
//thisWidth - 坐标在 Y 轴方向上平移的距离
affineTransform.translate(0, thisWidth);
//创建一个新的画布
//旋转后 thisHeight图像的宽度 thisWidth 图像的高度
dstImage = new BufferedImage(thisHeight, thisWidth, bufferedImage.getType());
//设置图片旋转的角度 是X轴正半轴 向Y轴正半轴 旋转的角度
affineTransform.rotate(java.lang.Math.toRadians(270));
//执行源图像的线性2D映射
AffineTransformOp affineTransformOp = new AffineTransformOp(affineTransform,null);
//转换图片对象为bufferedImage对象
affineTransformOp.filter(bufferedImage, dstImage);
// 创建字节输入流
ByteArrayOutputStream byteArrayOutputStream =new ByteArrayOutputStream();
ImageIO.write(dstImage, "JPEG", byteArrayOutputStream);
//获取新图片的数组
byte[] newImg = byteArrayOutputStream.toByteArray();
photoTemp2.setZp(newImg);
//执行更新操作
result = this.photoTemp2Service.updateDrvPhotoTempZP(photoTemp2);
out = response.getWriter();
//System.err.println(result.getReturnCode());
//判断数据库是否更新成功如果成功则执行刷新的方法
if(1==result.getReturnCode()){
out.println("<script style='javascript/text'>parent.rotationBack();</script>");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch(Exception e){
e.printStackTrace();
}finally{
if(out!=null)out.close();
}
}
这种方式是图片从数据库中读出来 在旋转 后存入数据库中 测试成功 希望对您有所帮助
<wbr></wbr>
分享到:
相关推荐
本项目"手写签名图片,可保存为图片或到数据库"是基于C#的WinForm应用程序,它允许用户进行手写签名,并将签名保存为图片格式或者存储到数据库中。以下是关于这个项目的详细知识点: 1. **手写签名控件**:在...
在开发Web应用时,图片上传是一项常见的功能...以上代码示例展示了使用Java Imaging API进行图片旋转的基本步骤。实际应用中,你需要根据具体需求选择合适的方法和技术,确保图片上传的完整流程都能正确处理旋转问题。
这包括加载图片资源、绘制图像、缩放和旋转等操作。注意,游戏中的图像通常需要预处理,例如裁剪、透明度处理等。 7. **碰撞检测**:游戏中的碰撞事件,如飞机与子弹的碰撞,是游戏逻辑的关键部分。常见的碰撞检测...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
首先,PageOffice提供了丰富的API,使得Java开发者可以方便地在应用程序中嵌入Office组件,实现对文档的各种操作,包括编辑、读取、保存等。其中,印章功能是一项实用的特性,允许用户在文档上添加具有法律效力的...
【Java图片管理器项目概述】 本项目名为"Java图片管理器",专为初学者设计,旨在提升对Java编程的理解和应用能力。这个程序能够帮助用户有效地管理和组织他们的图片文件,提供了一个简单易用的图形用户界面(GUI)...
// 保存旋转后的图片到指定位置 saveRotatedBitmap(rotatedBitmap, ...); } } // 创建线程池并提交任务 ExecutorService executor = Executors.newFixedThreadPool(4); // 创建4个线程的线程池 List<String> ...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...
在这些实例中,你可能会学习到如何读取不同格式的图片文件,如何进行像素级别的操作,以及如何将处理后的图片保存回磁盘。 其次,网络通信是Java的核心能力之一。Java的Socket编程接口使得开发者能够创建客户端-...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...
图片会被临时存储在服务器上,然后可能通过Hibernate保存到数据库,或者存储在文件系统中并链接到数据库记录。 7. **用户体验**: 为了实现“效果很好”的用户体验,开发者可能采用了实时预览、拖动裁剪框等交互...
6. 图像处理:支持插入和编辑图片,包括调整大小、裁剪、旋转等操作。 7. 表格处理:创建和编辑复杂的表格,支持公式计算、排序和过滤。 Free Spire.Doc for Java的免费版可能有限制,例如处理文档的页数或功能的...
5. **文件I/O操作**:截图完成后,需要将图片保存到本地文件系统。Java的java.io包提供了File、BufferedImage和ImageIO类,用于读写和处理图像文件。 6. **数据库集成**:虽然描述中未明确提及,但若该工具包含存储...
7. **邮件合并**:支持批量处理数据,如数据库或Excel表格,将数据合并到Word文档中,用于生成报告或信函等。 在使用Free Spire.Doc for Java时,开发者需要导入提供的库文件,例如在lib目录下的jar包。通过简单的...
电子相册(数据库)是一种数字化的图片存储和管理工具,专为个人用户设计,用于整理、保存和查看个人照片。这种应用通常具有用户友好的界面,支持多种图像格式,并提供了组织、搜索和共享图片的功能。在本文中,我们...
开发者可能使用了文件系统或数据库来保存玩家的最高分数和完成时间。当玩家成功完成拼图时,系统会自动更新并保存成绩。同时,玩家可以在游戏主界面查看这些记录,激发他们不断挑战自我,提高自己的游戏技能。 源码...
Java可以连接到各种类型的数据库,如MySQL、SQLite等,通过JDBC(Java Database Connectivity)接口进行数据操作。 6. **多线程**:在处理大量图片或执行耗时操作时,多线程可以提高应用程序的响应速度。例如,图片...