SpringMVC结合Jcrop实现图片裁剪
发布时间 - 2026-01-10 22:13:55 点击率:次本文实例为大家分享了SpringMVC结合Jcrop实现图片裁剪的具体代码,供大家参考,具体内容如下

一、jsp页面:
<form name="form" action="<%=request.getContextPath()%>/UploadDemo/uploadHeadImage" class="form-horizontal"
method="post" enctype="multipart/form-data">
<div class="modal-body text-center">
<div class="zxx_main_con">
<div class="zxx_test_list">
<input class="photo-file" type="file" name="imgFile" id="fcupload" onchange="readURL(this);"/>
<img alt="" src="" id="cutimg"/>
<input type="hidden" id="x" name="x"/>
<input type="hidden" id="y" name="y"/>
<input type="hidden" id="w" name="w"/>
<input type="hidden" id="h" name="h"/>
</div>
</div>
</div>
<div class="modal-footer">
<button id="submit" onclick="">上传</button>
</div>
</form>
二、jcrop组件引用情况:
<link rel="stylesheet" href="<c:url value="/resources/uploadPlugin/css/jquery.Jcrop.css"/>" type="text/css"></link> <script type="text/javascript" src="<c:url value="/resources/uploadPlugin/scripts/jquery-1.8.3.js"/>"></script> <script type="text/javascript" src="<c:url value="/resources/uploadPlugin/scripts/jquery.Jcrop.js"/>"></script>
三、jcrop使用方法
<script type="text/javascript">
//定义一个全局api,这样操作起来比较灵活
var api = null;
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.readAsDataURL(input.files[0]);
reader.onload = function (e) {
$('#cutimg').removeAttr('src');
$('#cutimg').attr('src', e.target.result);
api = $.Jcrop('#cutimg', {
setSelect: [ 20, 20, 200, 200 ],
aspectRatio: 1,
onSelect: updateCoords
});
};
if (api != undefined) {
api.destroy();
}
}
function updateCoords(obj) {
$("#x").val(obj.x);
$("#y").val(obj.y);
$("#w").val(obj.w);
$("#h").val(obj.h);
};
}
</script>
四、后台代码:
@RequestMapping(value = "/uploadHeadImage")
public String uploadHeadImage(
HttpServletRequest request,
@RequestParam(value = "x") String x,
@RequestParam(value = "y") String y,
@RequestParam(value = "h") String h,
@RequestParam(value = "w") String w,
@RequestParam(value = "imgFile") MultipartFile imageFile
) throws Exception{
System.out.println("==========Start=============");
String realPath = request.getSession().getServletContext().getRealPath("/");
String resourcePath = "resources/uploadImages/";
if(imageFile!=null){
if(FileUploadUtil.allowUpload(imageFile.getContentType())){
String fileName = FileUploadUtil.rename(imageFile.getOriginalFilename());
int end = fileName.lastIndexOf(".");
String saveName = fileName.substring(0,end);
File dir = new File(realPath + resourcePath);
if(!dir.exists()){
dir.mkdirs();
}
File file = new File(dir,saveName+"_src.jpg");
imageFile.transferTo(file);
String srcImagePath = realPath + resourcePath + saveName;
int imageX = Integer.parseInt(x);
int imageY = Integer.parseInt(y);
int imageH = Integer.parseInt(h);
int imageW = Integer.parseInt(w);
//这里开始截取操作
System.out.println("==========imageCutStart=============");
ImageCut.imgCut(srcImagePath,imageX,imageY,imageW,imageH);
System.out.println("==========imageCutEnd=============");
}
}
return "user/uploadImg/test";
}
五、ImageCut.java工具类:
/**
* 截取图片
* @param srcImageFile 原图片地址
* @param x 截取时的x坐标
* @param y 截取时的y坐标
* @param desWidth 截取的宽度
* @param desHeight 截取的高度
*/
public static void imgCut(String srcImageFile, int x, int y, int desWidth,
int desHeight) {
try {
Image img;
ImageFilter cropFilter;
BufferedImage bi = ImageIO.read(new File(srcImageFile+"_src.jpg"));
int srcWidth = bi.getWidth();
int srcHeight = bi.getHeight();
if (srcWidth >= desWidth && srcHeight >= desHeight) {
Image image = bi.getScaledInstance(srcWidth, srcHeight,Image.SCALE_DEFAULT);
cropFilter = new CropImageFilter(x, y, desWidth, desHeight);
img = Toolkit.getDefaultToolkit().createImage(
new FilteredImageSource(image.getSource(), cropFilter));
BufferedImage tag = new BufferedImage(desWidth, desHeight,
BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(img, 0, 0, null);
g.dispose();
//输出文件
ImageIO.write(tag, "JPEG", new File(srcImageFile+"_cut.jpg"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
六、jcrop的两种使用方式:
1、
jQuery('#cropbox').Jcrop({
onChange: showCoords,
onSelect: showCoords
});
2、
var api = $.Jcrop('#cropbox',{
onChange: showPreview,
onSelect: showPreview,
aspectRatio: 1
});
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# SpringMVC
# Jcrop
# 图片裁剪
# JQuery Jcrop 实现图片裁剪的插件
# jquery实现图片裁剪思路及实现
# PHP图片裁剪函数(保持图像不变形)
# js+jquery实现图片裁剪功能
# 基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛
# SNS)
# 使用JavaScript+canvas实现图片裁剪
# 使用gd库实现php服务端图片裁剪和生成缩略图功能分享
# c#利用Grahics进行图片裁剪
# c#图片处理之图片裁剪成不规则图形
# javascript 图片裁剪技巧解读
# 两种
# 大家分享
# 具体内容
# 大家多多
# 上传
# script
# javascript
# uploadPlugin
# css
# jquery
# js
# api
# scripts
# resources
# onclick
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何确保西部建站助手FTP传输的安全性?
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
如何在搬瓦工VPS快速搭建网站?
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
手机网站制作与建设方案,手机网站如何建设?
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
香港服务器部署网站为何提示未备案?
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
油猴 教程,油猴搜脚本为什么会网页无法显示?
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
什么是javascript作用域_全局和局部作用域有什么区别?
历史网站制作软件,华为如何找回被删除的网站?
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
bootstrap日历插件datetimepicker使用方法
Laravel Session怎么存储_Laravel Session驱动配置详解
Laravel如何实现API资源集合?(Resource Collection教程)
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
Python制作简易注册登录系统
Android使用GridView实现日历的简单功能
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
Laravel怎么判断请求类型_Laravel Request isMethod用法
Laravel如何使用Service Container和依赖注入?(代码示例)
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
如何在Windows 2008云服务器安全搭建网站?
使用豆包 AI 辅助进行简单网页 HTML 结构设计
Laravel怎么实现模型属性的自动加密
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
如何快速生成橙子建站落地页链接?
如何在建站主机中优化服务器配置?
javascript基本数据类型及类型检测常用方法小结
网站制作壁纸教程视频,电脑壁纸网站?
如何在IIS7上新建站点并设置安全权限?
Laravel如何使用Livewire构建动态组件?(入门代码)
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
Laravel如何实现用户注册和登录?(Auth脚手架指南)
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
,南京靠谱的征婚网站?
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】

