Java实现图片裁剪预览功能详解编程语言
2023-06-13 09:20:28 时间
public static void CutImage(String path1,String path2,int x,int y,int w,int h){
FileInputStream fileInputStream=null;
ImageInputStream iis=null;
try {
//读取图片文件,建立文件输入流
fileInputStream=new FileInputStream(path1);
//创建图片的文件流 迭代器
Iterator ImageReader it = ImageIO.getImageReadersByFormatName("jpg");
ImageReader reader=it.next();
//获取图片流 建立文图 文件流
iis=ImageIO.createImageInputStream(fileInputStream);
//获取图片默认参数
reader.setInput(iis, true);
ImageReadParam param=reader.getDefaultReadParam();
//定义裁剪区域
Rectangle rect=new Rectangle(x,y,w,h);
param.setSourceRegion(rect);
BufferedImage bi=reader.read(0,param);
ImageIO.write(bi, "jpg", new File(path2));
} catch (Exception e) {
e.printStackTrace();
System.out.println("裁剪失败");
}finally{
try {
if(fileInputStream!=null){
fileInputStream.close();
if(iis!=null){
iis.close();
} catch (IOException e) {
e.printStackTrace();
}
访问代码:
%@ page language="java" import="java.util.*,org.csg.upload.*" pageEncoding="utf-8"% //图片的相对路径 String imagPath=request.getParameter("imgPath"); String relPath=request.getRealPath("/");//获取图片服务器绝对地址 String newFileName=new Date().getTime()+".jpg"; //实际图片路径 String path1=relPath+imagPath; //裁剪后存储到服务器的图片路径 String path2=relPath+"/images/"+newFileName; int x=Integer.parseInt(request.getParameter("x")); int y=Integer.parseInt(request.getParameter("y")); int w=Integer.parseInt(request.getParameter("w")); int h=Integer.parseInt(request.getParameter("h")); try{ Upload.CutImage(path1, path2, x, y, w, h); out.print(" img src=images/"+newFileName+"/ }catch(Exception e){ e.printStackTrace(); out.print("图片裁剪失败"); %
jsp代码:
%@ page language="java" import="java.util.*" pageEncoding="utf-8"% !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" html head title Jsp开发头像裁剪 /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="css/jquery.Jcrop.css" type="text/css" / script type="text/javascript" src="js/jquery.min.js" /script script type="text/javascript" src="js/jquery.Jcrop.min.js" /script style type="text/css" *{margin: 0;padding: 0;} .cut{ margin-top: 20px; #preview-pane { display: block; position: absolute; z-index: 2000; top: 10px; right: -280px; padding: 6px; border: 1px rgba(0,0,0,.4) solid; background-color: white; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2); -moz-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2); box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2); #preview-pane .preview-container { width: 250px; height: 170px; overflow: hidden; /style script type="text/javascript" $(function(){ var jcrop_api, boundx="", boundy="", $preview = $(#preview-pane), $pcnt = $(#preview-pane .preview-container), $pimg = $(#preview-pane .preview-container img), xsize = $pcnt.width(), ysize = $pcnt.height(); $(#cutImage).Jcrop({ onChange:showCoords,//获取选中的值 onSelect:showCoords,//获取拖拽的值 aspectRatio: xsize / ysize },function(){ var bounds = this.getBounds(); boundx = bounds[0]; boundy = bounds[1]; jcrop_api = this; $preview.appendTo(jcrop_api.ui.holder); }); function showCoords(c){ var x=c.x; var y=c.y; var w=c.w; var h=c.h; $("#x1").val(parseInt(x)); $("#y1").val(parseInt(y)); $("#w").val(parseInt(w)); $("#h").val(parseInt(h)); if (parseInt(c.w) 0){ var rx = xsize / c.w; var ry = ysize / c.h; $pimg.css({ width: Math.round(rx * boundx) + px, height: Math.round(ry * boundy) + px, marginLeft: - + Math.round(rx * c.x) + px, marginTop: - + Math.round(ry * c.y) + px }); }); /script /head body h1 Java开发QQ头像裁剪系统 /h1 div img id="cutImage" alt="" src="images/1.jpg" div id="preview-pane" div img src="images/1.jpg" alt="Preview" / /div /div /div form action="success.jsp" method="post" input type="text" value="images/1.jpg" name="imgPath" x轴: input type="text" size="4" id="x1" name="x" / y轴: input type="text" size="4" id="y1" name="y"/ 宽度: input type="text" size="4" id="w" name="w"/ 高度: input type="text" size="4" id="h" name="h"/ input type="submit" value="裁剪"/ /form /body /html
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/10272.html
cjava相关文章
- java线程池的面试题_献给准备面试的你,Java线程and线程池面试题小结「建议收藏」
- Java基础学习笔记二十三 Java核心语法之反射详解编程语言
- Java多线程高并发学习笔记(二)——深入理解ReentrantLock与Condition详解编程语言
- Blowfish 加密算法 Java 版简单实现详解编程语言
- Java获取网卡信息详解编程语言
- 百度地图通过经纬度获取地址信息Java代码详解编程语言
- 用java实现数据库的增删改查详解编程语言
- JS前台加密,java后台解密实现详解编程语言
- JAVA实现的可定时到秒的秒表详解编程语言
- java读取文件大小详解编程语言
- Java实现简单的HTTP服务器代码详解编程语言
- java实现文件下载详解编程语言
- java方法返回json数据详解编程语言
- java实现验证码详解编程语言
- Java编程中如何提高性能详解编程语言
- 40个Java多线程问题总结,新手必备详解编程语言
- java和JAVASCRIPT的区别详解编程语言
- Java通过pinyin4j实现汉字转拼音详解编程语言
- Java关闭Socket来终止线程详解编程语言
- java.awt.headless 模式详解编程语言
- java实现把文件上传至ftp服务器详解编程语言
- java Quartz定时器任务与Spring task定时的几种实现,详解编程语言
- 使用Java连接MySQL实现查询功能(java连接mysql查询)
- Java实现Redis计数器功能(redis计数 java)