/**
* 裁剪图片的方法
*
* @param request
* @param response
* @return
* @author julong 2013-8-26 下午06:01:45
*/
public ModelAndView cutImg(HttpServletRequest request,HttpServletResponse response){
//获取smid
String smid = request.getParameter("smid");
//获得x裁剪的位置
String x = request.getParameter("x");
//获得y裁剪的位置
String y = request.getParameter("y");
//获得width选中的大小
String w = request.getParameter("w");
//获得height选中的大小
String h = request.getParameter("h");
//获取原图片对象
PhotoTemp2 photoTemp2 = this.photoTemp2Service.getZp(smid);
//获取图片对象
byte[] imgBtye = photoTemp2.getZp();
try {
//获取输出流
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(imgBtye);
//将byte数组转换为image对象
BufferedImage bufferedImage=ImageIO.read(byteArrayInputStream);
//获得当前的图片的高度和宽度
int thisHeight = bufferedImage.getHeight();
int thisWidth = bufferedImage.getWidth();
//获得裁剪的图片的高度和宽度 x y为裁剪的其实位置 w h 为裁剪的图片大小
BufferedImage subImage = bufferedImage.getSubimage(Integer.valueOf(x), Integer.valueOf(y), Integer.valueOf(w), Integer.valueOf(h));
//判断是否等于原图的大
if(subImage.getWidth()>=0 || subImage.getHeight()>=0){
//设置绘制的图片的大小
BufferedImage tempImg = new BufferedImage(Integer.valueOf(w),Integer.valueOf(h),BufferedImage.TYPE_INT_RGB);
//绘制图片
tempImg.getGraphics().drawImage(subImage.getScaledInstance(Integer.valueOf(w), Integer.valueOf(h), Image.SCALE_DEFAULT), 0, 0,null);
//创建字节输入流
ByteArrayOutputStream byteArrayOutputStream =new ByteArrayOutputStream();
ImageIO.write(tempImg, "JPEG", byteArrayOutputStream);
//获取新图片的数组
byte[] newImg = byteArrayOutputStream.toByteArray();
photoTemp2.setZp(newImg);
//执行更新操作
ExcuteResult r = this.photoTemp2Service.updateDrvPhotoTempZP(photoTemp2);
System.out.println(r);
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
request.setAttribute("smid",smid);
return new ModelAndView("dagl/lsda_drv_cutImg");
}
jsp裁剪页面
<%@ page language="java" pageEncoding="gbk"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>My JSP 'lsda_drv_cutImg.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="cache-control" content="no-cache"/>
<meta http-equiv="expires" content="0"/>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3"/>
<meta http-equiv="description" content="This is my page"/>
<link rel="stylesheet" href="jquery/jcrop/css/jquery.Jcrop.css" type="text/css" />
<script type="text/javascript" src="jquery/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="jquery/jcrop/js/jquery.Jcrop.min.js"></script>
<script type="text/javascript" src="jquery/jcrop/js/jquery.Jcrop.js"></script>
<script language="Javascript">
// Remember to invoke within jQuery(window).load(...)
// If you don't, Jcrop may not initialize properly
jQuery(document).ready(function(){
jQuery('#cropbox').Jcrop({
onChange: showCoords,
onSelect: showCoords
});
});
// Our simple event handler, called from onChange and onSelect
// event handlers, as per the Jcrop invocation above
function showCoords(c)
{
jQuery('#x').val(c.x);
jQuery('#y').val(c.y);
jQuery('#x2').val(c.x2);
jQuery('#y2').val(c.y2);
jQuery('#w').val(c.w);
jQuery('#h').val(c.h);
};
//单击裁剪的事件
function cutButton(){
$("#cutImgForm").submit();
}
function getEventType(event) {
//opener 属性非常有用,创建的窗口可以引用创建它的窗口所定义的属性和函数
window.opener.cutImgPageClosed();
window.opener = null;
}
</script>
<style type="text/css">
div,form,label{
padding:0px;margin:0px;
}
</style>
</head>
<body onunload="getEventType(event)">
<div style="padding:0px;text-align:center; " >
<form id="cutImgForm" action="drvphototemp.dagl?method=cutImg&smid=${smid }" method="post" >
<label>X1 <input type="text" size="4" id="x" name="x" /></label>
<label>Y1 <input type="text" size="4" id="y" name="y" /></label>
<label>X2 <input type="text" size="4" id="x2" name="x2" /></label>
<label>Y2 <input type="text" size="4" id="y2" name="y2" /></label>
<label>W <input type="text" size="4" id="w" name="w" /></label>
<label>H <input type="text" size="4" id="h" name="h" /></label>
<input type="button" name="" value="提交" onclick="cutButton()"></input>
</form>
<img src="drvphototemp.dagl?method=getZpList&smid=${smid}" id="cropbox" />
</div>
</body>
</html>
我用的jcrop插件
这个你在网上搜索一下就能出来很方便的东西 这是我做的项目中的代码 数据库中存储的是blob格式的16进制文件 亲测裁剪成功了 分享给大家 希望对你有所帮助
<wbr></wbr>
相关推荐
本教程将详细介绍如何使用ThinkPHP框架、jQuery库、Jcrop图像裁剪工具以及AjaxFileUpload插件实现一个无刷新的图片上传和裁剪功能,最后将裁剪后的图片保存到数据库。 首先,`ThinkPHP`是一个流行的PHP框架,它提供...
本项目"手写签名图片,可保存为图片或到数据库"是基于C#的WinForm应用程序,它允许用户进行手写签名,并将签名保存为图片格式或者存储到数据库中。以下是关于这个项目的详细知识点: 1. **手写签名控件**:在...
3. **保存到数据库**:图片的元数据(如文件名、大小、上传时间等)会被保存到数据库中。常用的数据库系统有MySQL、SQL Server、Oracle等。图片本身通常不会直接存入数据库,而是保存在文件系统中,数据库中仅存储...
传统的做法是将图片保存在文件系统中,并在数据库中存储图片的路径。然而,有些情况下,直接将图片数据存储在数据库(通常是BLOB类型字段)中可能更合适,比如为了确保数据完整性、方便备份和恢复,或者在分布式系统...
此外,可以使用Image对象提供的方法进行图片处理,如缩放、裁剪等。 3. 图片数据转换: 在上传图片到数据库之前,通常需要将图片转换成适合存储的数据格式,如二进制数组。C#的`MemoryStream`和`BinaryReader`类...
- 考虑将大图片存储在文件系统中,只在数据库中存储路径,以减轻数据库负担。 - 使用缓存机制,减少频繁的数据库查询。 以上是ASP实现图片上传到数据库的基本流程和技术要点。实际应用中,还需要根据项目需求和...
在本文中,我们将深入探讨如何使用C# Winform开发一个小程序,实现数据库中保存图片,以及在界面上显示、修改和为图片添加边框的功能。Winform是.NET框架中的一个强大的用户界面工具,用于创建桌面应用程序。我们将...
在图片上传过程中,ASP.NET接收JavaScript发送的裁剪后图片数据,通常通过Ajax异步请求完成,这样可以在不刷新页面的情况下完成上传。服务器端可以使用ASP.NET的HTTP模块或控制器来接收和处理这些请求。收到图片数据...
在安卓应用开发中,"安卓图片裁剪后上传"是一个常见的功能需求,尤其在社交类应用中,如模仿微信朋友圈的分享功能。这个功能让用户能够选择一张图片,对其进行裁剪,然后将裁剪后的图片上传到服务器。在本文中,我们...
例如,可以将图片保存到云存储服务如阿里云OSS、AWS S3等,同时在数据库中记录图片的URL和其他元数据。 7. **权限控制**:在保存头像时,需要考虑权限问题,确保只有合法用户能修改自己的头像。这通常涉及到身份...
例如,可以使用cropper.js这样的JavaScript插件,它提供了图片裁剪的功能,用户可以在预览区域自由调整裁剪范围。 在后端,我们需要创建一个JFinal的Controller,处理用户的上传请求。用户上传图片时,会发送一个...
在这个项目中,可能涉及的类包括上传类(处理文件上传)、裁剪类(处理图片裁剪)以及用户类(处理用户信息,例如存储头像URL)。每个类都有其特定的职责,遵循面向对象编程原则,提高了代码的可维护性和复用性。 ...
通常,Spring Boot会使用其集成的数据持久化技术(如JPA或MyBatis)将图片保存到数据库,但考虑到图片文件的大小,更常见的是将图片保存在文件系统中,只存储文件路径在数据库中。这样可以提高读取速度并减轻数据库...
3. Java类文件:实现了图片裁剪的逻辑,可能包括图片的读取、裁剪、保存等功能。 4. CSS文件:定义了页面的样式和布局。 5. JavaScript文件:提供了前端的交互逻辑,如图片选择、预览和裁剪操作。 6. 图片资源:可能...
SSM图片裁剪技术主要涉及三个关键组件:Spring、Spring MVC和MyBatis,它们是Java Web开发中常用的三大框架。结合cropper框架,可以实现高效、便捷的图片上传和裁剪功能。以下是对这个技术主题的详细阐述。 **1. ...
1. **图片路径存储**:程序并不直接将图片文件内容存储在数据库中,而是保存图片的路径信息。这是常见的做法,因为直接存储图片可能会占用大量数据库空间,而且不利于文件的管理和更新。图片路径存储后,需要在应用...
然后,可以将图片保存到服务器的文件系统或者数据库中。JSP也可以返回保存成功与否的反馈信息,以便前端更新显示。 6. 安全与优化:在实际应用中,需要注意安全问题,比如限制上传文件的类型和大小,防止恶意文件...
标题中的“上传图片路径到mysql数据库的源码.docx”指的是一个PHP脚本,用于处理用户上传图片到服务器,并将图片的路径存储到MySQL数据库中。这个过程涉及到多个步骤,包括文件上传验证、图片处理(如裁剪和添加水印...
在后端,接收到的图片数据可能需要存储到文件系统或数据库中,以便后续访问和处理。 图片裁剪涉及图像处理技术。前端可以利用JavaScript库,如Cropper.js、JQuery Cropper等,这些库提供了用户交互式的裁剪界面和...
`jsp图片上传可裁剪`这个主题主要涉及两个关键技术点:图片上传和图片裁剪。接下来,我们将详细讨论这两个方面。 ### 图片上传 1. **文件输入控件**:在HTML中,`<input type="file">`标签用于创建一个文件选择器...