JCrop+ajaxUpload 图像切割上传的实例代码

网友投稿 178 2023-07-11


JCrop+ajaxUpload 图像切割上传的实例代码

先给大家展示下效果图:

页面代码

里面用户的uuid是写死的test

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

用户头像剪裁

+添加图片

提交

后台代码

@ResponseBody

@RequestMapping("uploadphoto")

public Map uploadPhoto(@RequestParam("upimage") MultipartFile imageFile, HttpServletRequest request,

HttpServletResponse response) throws Exception {

Map result = new HashMap();

boolean tag =false;

String unid = request.getParameter("unid");

String x = request.getParameter("x");

String y = request.getParameter("y");

String h = request.getParameter("h");

String w = request.getParameter("w");

// 页面实际图片宽高

String pheight = request.getParameter("ph");

String pweight = request.getParameter("pw");

// 切图参数

int imageX = Integer.parseInt(x);

int imageY = Integer.parseInt(y);

int imageH = Integer.parseInt(h);

int imageW = Integer.parseInt(w);

int srcH = Integer.parseInt(pheight);

int srcW = Integer.parseInt(pweight);

String realPath = request.getSession().getServletContext().getRealPath("/");

String resourcePath = "resources/uploadImages/";

try {

if (imageFile != null) {

if (FileUploadUtil.allowUpload(imageFile.getContentType())) {

// 这里开始截取操作

byte[] b = ImageCut.imgCut(imageFile.getInputStream(), imageX, imageY, imageW, imageH, srcW, srcH);

if (b != null) {

// 存入数据库

User user = userService.selectByPrimaryKey(unid);

user.setPhoto(b);

tag = (userService.updateByPrimaryKeySelective(user)==1)?tag=true:tag;

result.put("result", tag);

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

result.put("result", tag);

return result;

}

图像切割工具类

package com.ssm.demo.utils;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.image.BufferedImage;

import java.awt.image.CropImageFilter;

import java.awt.image.FilteredImageSource;

import java.awt.image.ImageFilter;

import java.io.ByteArrayOutputStream;

import java.io.InputStream;

import javax.imageio.ImageIO;

public class ImageCut {

/**

* 截取图片

*

* @param srcImageFile

* 原图片地址

* @param x

* 截取时的x坐标

* @param y

* 截取时的y坐标

* @param desWidth

* 截取的宽度

* @param desHeight

* 截取的高度

* @param srcWidth

* 页面图片的宽度

* @param srcHeight

* 页面图片的高度

*

*/

public static byte[] imgCut(InputStream input, int x, int y, int desWidth, int desHeight, int srcWidth,

int srcHeight) {

try {

Image img;

ImageFilter cropFilter;

BufferedImage bi = ImageIO.read(input);

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();

// 输出文件

ByteArrayOutputStream out = new ByteArrayOutputStream();

ImageIO.write(tag, "JPEG", out);

return out.toByteArray();

}

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}

以上所述是给大家介绍的JCrop+ajaxUpload 图像切割上传的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java 调整格式日志输出
下一篇:使用plupload自定义参数实现多文件上传
相关文章

 发表评论

暂时没有评论,来抢沙发吧~