亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

jQuery jcrop插件截圖使用方法

 更新時(shí)間:2013年11月20日 16:30:31   作者:  
項(xiàng)目需要做一個(gè)頭像截取的功能,類似于QQ頭像截取功能。在網(wǎng)上搜了下,最后使用jQuery插件jcrop來截取

在后臺(tái)來進(jìn)行圖片切割。
頭像截取的原理:在前臺(tái)使用jcrop獲取切面的x軸坐標(biāo)、y軸坐標(biāo)、切面高度、切面寬度,然后將這四個(gè)值傳給后
臺(tái)。在后臺(tái)要進(jìn)行放大處理:將切面放大N倍,N=原圖/前臺(tái)展示的頭像。即X = X*原圖寬/前圖寬,Y = Y*原圖高/前
圖高,W = W*原圖寬/前圖寬,H = H*原圖高/前圖高。
實(shí)例:
JSP:

復(fù)制代碼 代碼如下:

<div id="cutImage" style="display: none;">
 <div class="bigImg" style="float: left;">
     <img id="srcImg" src="" width="400px" height="270px"/>
 </div>
 <div id="preview_box" class="previewImg">
     <img id="previewImg" src="" width="120px"/>
 </div>

 <div >
 <form action="" method="post" id="crop_form">
      <input type="hidden" id="bigImage" name="bigImage"/>
    <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" />
    <P><input type="button" value="確認(rèn)" id="crop_submit"/></P>
     </form>
</div>
    </div>

樣式:大圖、小圖展示都需要固定高度、寬度,因?yàn)楹笈_(tái)需要進(jìn)行放大處理。即:<img width=""height=""/>
然后是使用jcrop了。在使用jcrop前我們需要下載jcrop:http://deepliquid.com/content/Jcrop.html。
將下載的壓縮包解壓后可以看到三個(gè)文件夾及一個(gè)index.html文件,/ css下放置的是Jcorp的樣式文件,/demo下放置的是幾個(gè)簡(jiǎn)單的例子(index.html中引用的鏈接就是放置在這個(gè)文件夾下),/js下放置的是Jcorp中最重要的腳本文件。我們只需要使用三個(gè)文件即可:jquery.Jcrop.css、jquery.Jcrop.js、JQuery.js
使用方法:

復(fù)制代碼 代碼如下:

//裁剪圖像
function cutImage(){
    $("#srcImg").Jcrop( {
     aspectRatio : 1,
     onChange : showCoords,
     onSelect : showCoords,
     minSize :[200,200]
 });
 //簡(jiǎn)單的事件處理程序,響應(yīng)自onChange,onSelect事件,按照上面的Jcrop調(diào)用
 function showCoords(obj) {
     $("#x").val(obj.x);
     $("#y").val(obj.y);
     $("#w").val(obj.w);
     $("#h").val(obj.h);
     if (parseInt(obj.w) > 0) {
  //計(jì)算預(yù)覽區(qū)域圖片縮放的比例,通過計(jì)算顯示區(qū)域的寬度(與高度)與剪裁的寬度(與高度)之比得到
  var rx = $("#preview_box").width() / obj.w;
  var ry = $("#preview_box").height() / obj.h;
  //通過比例值控制圖片的樣式與顯示
  $("#previewImg").css( {
      width : Math.round(rx * $("#srcImg").width()) + "px", //預(yù)覽圖片寬度為計(jì)算比例值與原圖片寬度的乘積
      height : Math.round(rx * $("#srcImg").height()) + "px", //預(yù)覽圖片高度為計(jì)算比例值與原圖片高度的乘積
      marginLeft : "-" + Math.round(rx * obj.x) + "px",
      marginTop : "-" + Math.round(ry * obj.y) + "px"
  });
     }
 }
}

在使用jcrop前一定要先將$(“”).jcrop();進(jìn)行預(yù)初始化,否則沒有效果。
 還有一種調(diào)用的方法,

   

復(fù)制代碼 代碼如下:

    var api = $.Jcrop('#cropbox',{
    onChange: showPreview,
    onSelect: showPreview,
    aspectRatio: 1
    });
   

這種方法是將Jcrop生成的對(duì)象賦給一個(gè)全局變量,這樣操作就會(huì)比較方便。
通過上面的js,就將X軸坐標(biāo)、Y軸坐標(biāo)、高度H、寬度W這個(gè)四個(gè)值傳遞給后臺(tái)了,后臺(tái)就只需要根據(jù)這四個(gè)值
進(jìn)行放大處理,然后切割即可。

 Action

復(fù)制代碼 代碼如下:

/**
     * 裁剪頭像
     */
    public String cutImage(){
 /*
  * 獲取參數(shù)
  * x,y,w,h,bigImage
  */
 HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
 int x = Integer.valueOf(request.getParameter("x"));
 int y = Integer.valueOf(request.getParameter("y"));
 int w = Integer.valueOf(request.getParameter("w"));
 int h = Integer.valueOf(request.getParameter("h"));
 String bigImage = request.getParameter("bigImage");  

 //獲取文件真實(shí)路徑
 //獲取文件名
 String[] imageNameS = bigImage.split("/");
 String imageName = imageNameS[imageNameS.length-1];
 //文件正式路徑
 String imagePath = getSavePath()+"\\"+imageName;

 //切割圖片
 ImageCut imageCut = new ImageCut();
 imageCut.cutImage(imagePath, x, y, w, h);

 //頭像裁剪完成后,將圖片路徑保存到用戶
 UserBean userBean = (UserBean) request.getSession().getAttribute("userBean");
 userBean.setUserPhoto(bigImage);
 //保存頭像
 UserCenterService centerService = new UserCenterService();
 centerService.updatePhoto(userBean);
 //將修改后的用戶保存到session中
 request.getSession().setAttribute("userBean", userBean);

 return "updatePhoto";
    }
}

裁剪圖片工具類:ImageCut.java

復(fù)制代碼 代碼如下:

public class ImageCut {

    /**
     * 圖片切割
     * @param imagePath  原圖地址
     * @param x  目標(biāo)切片坐標(biāo) X軸起點(diǎn)
     * @param y     目標(biāo)切片坐標(biāo) Y軸起點(diǎn)
     * @param w  目標(biāo)切片 寬度
     * @param h  目標(biāo)切片 高度
     */
    public void cutImage(String imagePath, int x ,int y ,int w,int h){
 try {
     Image img;
     ImageFilter cropFilter;
     // 讀取源圖像
     BufferedImage bi = ImageIO.read(new File(imagePath));
     int srcWidth = bi.getWidth();      // 源圖寬度
     int srcHeight = bi.getHeight();    // 源圖高度

     //若原圖大小大于切片大小,則進(jìn)行切割
     if (srcWidth >= w && srcHeight >= h) {
  Image image = bi.getScaledInstance(srcWidth, srcHeight,Image.SCALE_DEFAULT);

  int x1 = x*srcWidth/400;
  int y1 = y*srcHeight/270;
  int w1 = w*srcWidth/400;
  int h1 = h*srcHeight/270;

  cropFilter = new CropImageFilter(x1, y1, w1, h1);
  img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(image.getSource(), cropFilter));
  BufferedImage tag = new BufferedImage(w1, h1,BufferedImage.TYPE_INT_RGB);
  Graphics g = tag.getGraphics();
  g.drawImage(img, 0, 0, null); // 繪制縮小后的圖
  g.dispose();
  // 輸出為文件
  ImageIO.write(tag, "JPEG", new File(imagePath));
     }
 } catch (IOException e) {
     e.printStackTrace();
 }
    }
}


相關(guān)文章

  • 基于jquery的圖片的切換(以數(shù)字的形式)

    基于jquery的圖片的切換(以數(shù)字的形式)

    圖片的切換時(shí)一個(gè)常用的功能。下面實(shí)現(xiàn)的是一個(gè)點(diǎn)擊數(shù)字來進(jìn)行圖片的切換。學(xué)習(xí)jquery的朋友可以參考下原理。
    2011-02-02
  • 基于Jquery的表格隔行換色,移動(dòng)換色,點(diǎn)擊換色插件

    基于Jquery的表格隔行換色,移動(dòng)換色,點(diǎn)擊換色插件

    希望能和大家一起交流學(xué)習(xí)。先放上去一個(gè)上周學(xué)習(xí)的一個(gè)jquery插件,基于Jquery的表格隔行換色,移動(dòng)換色,點(diǎn)擊換色插件。
    2010-12-12
  • jQuery 拖動(dòng)層(在可視區(qū)域范圍內(nèi))

    jQuery 拖動(dòng)層(在可視區(qū)域范圍內(nèi))

    獲取層元素,在瀏覽器可視區(qū)域的最左、最邊,最上、最下的值。并且在拖動(dòng)層的過程中,把當(dāng)前層的坐標(biāo)值,去和這幾個(gè)值,做比較,如果超過這些值。那么就不能再拖動(dòng)這個(gè)方向,即把值設(shè)為最小或最大
    2012-05-05
  • jQuery實(shí)現(xiàn)計(jì)算器功能

    jQuery實(shí)現(xiàn)計(jì)算器功能

    這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • jquery標(biāo)簽選擇器應(yīng)用示例詳解

    jquery標(biāo)簽選擇器應(yīng)用示例詳解

    這篇文章主要為大家詳細(xì)介紹了jquery標(biāo)簽選擇器應(yīng)用示例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • jQuery Form表單取值的方法

    jQuery Form表單取值的方法

    這篇文章主要介紹了jQuery Form表單取值的方法,之前js取form表單的值都是一個(gè)一個(gè)的取,數(shù)量一多之后容易出錯(cuò)而且煩透了。具體jq form表單取值方法,大家通過本文學(xué)習(xí)下吧
    2017-01-01
  • jQuery中scrollTop()方法用法實(shí)例

    jQuery中scrollTop()方法用法實(shí)例

    這篇文章主要介紹了jQuery中scrollTop()方法用法,實(shí)例分析了scrollTop()方法的功能、定義及返回或設(shè)置匹配元素的滾動(dòng)條的垂直偏移量時(shí)的使用技巧,需要的朋友可以參考下
    2015-01-01
  • 基于jQuery對(duì)象和DOM對(duì)象和字符串之間的轉(zhuǎn)化實(shí)例

    基于jQuery對(duì)象和DOM對(duì)象和字符串之間的轉(zhuǎn)化實(shí)例

    下面小編就為大家?guī)硪黄趈Query對(duì)象和DOM對(duì)象和字符串之間的轉(zhuǎn)化實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • jQuery實(shí)現(xiàn)的網(wǎng)格線繪制方法

    jQuery實(shí)現(xiàn)的網(wǎng)格線繪制方法

    這篇文章主要介紹了jQuery實(shí)現(xiàn)的網(wǎng)格線繪制方法,涉及jQuery針對(duì)頁面元素的獲取及樣式動(dòng)態(tài)操作相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • jQuery查詢數(shù)據(jù)返回object和字符串影響原因是什么

    jQuery查詢數(shù)據(jù)返回object和字符串影響原因是什么

    查詢數(shù)據(jù)返回object和字符串,導(dǎo)致這兩種情況的原因是什么呢?在本文將為大家詳細(xì)介紹下,具體祥看代碼
    2013-08-08

最新評(píng)論