使用jquery jcrop插件进行图片的截取与保存

第一步:上传大图片到服务器,并且展示到页面
第二部:调用jcrop组件js及css

[html]  view plain copy
  1. <script src="${ctx}/js/jquery-jcrop/jquery.Jcrop.js"></script>    
  2. <link rel="stylesheet" href="${ctx}/css/jquery-jcrop/jquery.Jcrop.css" type="text/css" />   

 

第三部:采用插件
进行图片的选取,其中主要包括x,y,width,height

 


 

[javascript]  view plain copy
  1. $('#cropButton').click(function(){  
  2.             var x = $("#x").val();  
  3.             var y = $("#y").val();  
  4.             var w = $("#w").val();  
  5.             var h = $("#h").val();    
  6.             if(w == 0 || h == 0 ){  
  7.                 alert("您还没有选择图片的剪切区域,不能进行剪切图片!");  
  8.                 return;  
  9.             }     
  10.             //alert("你要剪切图片的X坐标: "+x + ",Y坐标: " + y + ",剪切图片的宽度: " + w + ",高度:" + h );  
  11.             if(confirm("确定按照当前大小剪切图片吗")){                 
  12.                 //document.form1.submit();  
  13.                 //$("#makeHeadImgDiv").toggle();  
  14.                 function loadHeadUrl(data){  
  15.                     //alert(data.headUrl);  
  16.                      alert(data.retMsg);  
  17.                      $("#img_headUrl").attr("src",data.headUrl);  
  18.                      $("#headUrl").val(data.headUrl);  
  19.                     //alert($("#headUrl").val());  
  20.                 }  
  21.                 var url="${ctx}/admin/pri/guest/guest_cutHeadImg.action";  
  22.                 var options ={   
  23.                         //beforeSubmit: validate,  
  24.                         url:       url,  
  25.                         success:   loadHeadUrl,   
  26.                         type:      'post',        
  27.                         dataType:  'json'  
  28.                 };  
  29.                 $('#cutHeadImgFrm').ajaxSubmit(options);  
  30.             }  
  31.      });  


然后调用后台方法切割图片。
设计的包:
import java.awt.*;
import java.awt.image.*;
import java.awt.Graphics;
import java.awt.color.ColorSpace;
import javax.imageio.ImageIO;
第四部:保存新文件路径,展示图片到页面。

 


方法类:

 

[java]  view plain copy
  1. package com.wondertek.meeting.util;  
  2.   
  3. import java.io.*;  
  4. import java.awt.*;  
  5. import java.awt.image.*;  
  6. import java.awt.Graphics;  
  7. import java.awt.color.ColorSpace;  
  8. import javax.imageio.ImageIO;  
  9.   
  10. public class ImageCut {  
  11.       
  12.     /**  
  13.      * 图像切割(改)     *  
  14.      * @param srcImageFile            源图像地址 
  15.      * @param dirImageFile            新图像地址 
  16.      * @param x                       目标切片起点x坐标 
  17.      * @param y                      目标切片起点y坐标 
  18.      * @param destWidth              目标切片宽度 
  19.      * @param destHeight             目标切片高度 
  20.      */  
  21.     public static void abscut(String srcImageFile,String dirImageFile, int x, int y, int destWidth,  
  22.             int destHeight) {  
  23.         try {  
  24.             Image img;  
  25.             ImageFilter cropFilter;  
  26.             // 读取源图像  
  27.             BufferedImage bi = ImageIO.read(new File(srcImageFile));  
  28.             int srcWidth = bi.getWidth(); // 源图宽度  
  29.             int srcHeight = bi.getHeight(); // 源图高度            
  30.             if (srcWidth >= destWidth && srcHeight >= destHeight) {  
  31.                 Image image = bi.getScaledInstance(srcWidth, srcHeight,  
  32.                         Image.SCALE_DEFAULT);  
  33.                 // 改进的想法:是否可用多线程加快切割速度  
  34.                 // 四个参数分别为图像起点坐标和宽高  
  35.                 // 即: CropImageFilter(int x,int y,int width,int height)  
  36.                 cropFilter = new CropImageFilter(x, y, destWidth, destHeight);  
  37.                 img = Toolkit.getDefaultToolkit().createImage(  
  38.                         new FilteredImageSource(image.getSource(), cropFilter));  
  39.                 BufferedImage tag = new BufferedImage(destWidth, destHeight,  
  40.                         BufferedImage.TYPE_INT_RGB);  
  41.                 Graphics g = tag.getGraphics();  
  42.                 g.drawImage(img, 00null); // 绘制缩小后的图  
  43.                 g.dispose();  
  44.                 // 输出为文件  
  45.                 ImageIO.write(tag, "JPEG"new File(dirImageFile));  
  46.             }  
  47.         } catch (Exception e) {  
  48.             e.printStackTrace();  
  49.         }  
  50.     }  
  51.   
  52.       
  53.     /** 
  54.      * 缩放图像 
  55.      *  
  56.      * @param srcImageFile       源图像文件地址 
  57.      * @param result             缩放后的图像地址 
  58.      * @param scale              缩放比例 
  59.      * @param flag               缩放选择:true 放大; false 缩小; 
  60.      */  
  61.     public static void scale(String srcImageFile, String result, int scale,  
  62.             boolean flag) {  
  63.         try {  
  64.             BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件  
  65.             int width = src.getWidth(); // 得到源图宽  
  66.             int height = src.getHeight(); // 得到源图长  
  67.             if (flag) {  
  68.                 // 放大  
  69.                 width = width * scale;  
  70.                 height = height * scale;  
  71.             } else {  
  72.                 // 缩小  
  73.                 width = width / scale;  
  74.                 height = height / scale;  
  75.             }  
  76.             Image image = src.getScaledInstance(width, height,Image.SCALE_DEFAULT);  
  77.             BufferedImage tag = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);  
  78.             Graphics g = tag.getGraphics();  
  79.             g.drawImage(image, 00null); // 绘制缩小后的图  
  80.             g.dispose();  
  81.             ImageIO.write(tag, "JPEG"new File(result));// 输出到文件流  
  82.         } catch (IOException e) {  
  83.             e.printStackTrace();  
  84.         }  
  85.     }  
  86.       
  87.     /** 
  88.      * 重新生成按指定宽度和高度的图像 
  89.      * @param srcImageFile       源图像文件地址 
  90.      * @param result             新的图像地址 
  91.      * @param _width             设置新的图像宽度 
  92.      * @param _height            设置新的图像高度 
  93.      */  
  94.     public static void scale(String srcImageFile, String result, int _width,int _height) {        
  95.         scale(srcImageFile,result,_width,_height,0,0);  
  96.     }  
  97.       
  98.     public static void scale(String srcImageFile, String result, int _width,int _height,int x,int y) {  
  99.         try {  
  100.               
  101.             BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件  
  102.               
  103.             int width = src.getWidth(); // 得到源图宽  
  104.             int height = src.getHeight(); // 得到源图长  
  105.               
  106.             if (width > _width) {  
  107.                  width = _width;  
  108.             }  
  109.             if (height > _height) {  
  110.                 height = _height;  
  111.             }             
  112.             Image image = src.getScaledInstance(width, height,Image.SCALE_DEFAULT);  
  113.             BufferedImage tag = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);  
  114.             Graphics g = tag.getGraphics();  
  115.             g.drawImage(image, x, y, null); // 绘制缩小后的图  
  116.             g.dispose();              
  117.             ImageIO.write(tag, "JPEG"new File(result));// 输出到文件流  
  118.         } catch (IOException e) {  
  119.             e.printStackTrace();  
  120.         }  
  121.     }  
  122.       
  123.     /** 
  124.      * 图像类型转换 GIF->JPG GIF->PNG PNG->JPG PNG->GIF(X) 
  125.      */  
  126.     public static void convert(String source, String result) {  
  127.         try {  
  128.             File f = new File(source);  
  129.             f.canRead();  
  130.             f.canWrite();  
  131.             BufferedImage src = ImageIO.read(f);  
  132.             ImageIO.write(src, "JPG"new File(result));  
  133.         } catch (Exception e) {  
  134.             e.printStackTrace();  
  135.         }  
  136.     }  
  137.   
  138.     /** 
  139.      * 彩色转为黑白 
  140.      *  
  141.      * @param source 
  142.      * @param result 
  143.      */  
  144.     public static void gray(String source, String result) {  
  145.         try {  
  146.             BufferedImage src = ImageIO.read(new File(source));  
  147.             ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);  
  148.             ColorConvertOp op = new ColorConvertOp(cs, null);  
  149.             src = op.filter(src, null);  
  150.             ImageIO.write(src, "JPEG"new File(result));  
  151.         } catch (IOException e) {  
  152.             e.printStackTrace();  
  153.         }  
  154.     }  
  155.   
  156.     /** 
  157.      * @param args 
  158.      */  
  159.     public static void main(String[] args) {  
  160.         //晕。。。搞成多个了...  
  161.         //cut("c:/images/ipomoea.jpg", "c:/images/t/ipomoea.jpg", 200, 150);  
  162.         //ok  
  163.         //gray("c:/images/ipomoea.jpg", "c:/images/t/ipomoea.jpg");  
  164.         //convert("c:/images/ipomoea.jpg", "c:/images/t/ipomoea.gif");  
  165.         //scale("c:/images/5105049910001020110718648723.jpg", "c:/images/t/5105049910001020110718648725.jpg",154,166,157,208);  
  166.         //scale("c:/images/rose1.jpg", "c:/images/t/rose1.jpg",154,166,157,208);  
  167.         scale("c:/images/rose1.jpg""c:/images/t/rose2.jpg",154,166,10,10);  
  168.           
  169.     }  
  170. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值