jqueryjcrop頭像上傳
⑴ jquery怎麼打開本地圖片預覽,點擊確定後上傳
1, tapmodo / Jcrop 
Jcrop是人氣最高的圖片裁剪jQuery插件,stars數量2k+,功能非常豐富,文檔齊全,首選。Github.com官網也使用了這個插件。有一個小細節是,邊框線的螞蟻線是動畫的,真的很用心。 
2, fengyuanchen / cropper 
Cropper也是一款圖片裁剪jQuery插件,stars數量1k+,是杭州的前端工程師Fengyuan Chen所寫的,功能也相當豐富,裁剪時還可以對原圖進行旋轉。 
3, imgAreaSelect 也是比較經典的圖片裁剪jQuery插件,我很久以前就在自己的項目中使用過,stars數量500+。 
http://blog.csdn.net/cuixiping/article/details/45966177
⑵ jquery jcrop插件怎麼截屏
<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="確認" id="crop_submit"/></P>
     </form>
</div>
    </div>
樣式:大圖、小圖展示都需要固定高度、寬度,因為後台需要進行放大處理。即:<img width=""height=""/>
然後是使用jcrop了。在使用jcrop前我們需要下載jcrop:http://deepliquid.com/content/Jcrop.html。 
將下載的壓縮包解壓後可以看到三個文件夾及一個index.html文件,/
 
css下放置的是Jcorp的樣式文件,/demo下放置的是幾個簡單的例子(index.html中引用的鏈接就是放置在這個文件夾下),/js下放置的是Jcorp中最重要的腳本文件。我們只需要使用三個文件即可:jquery.Jcrop.css、jquery.Jcrop.js、JQuery.js
使用方法:
復制代碼 代碼如下:
//裁剪圖像
function cutImage(){
    $("#srcImg").Jcrop( {
     aspectRatio : 1,
     onChange : showCoords,
     onSelect : showCoords,
     minSize :[200,200]
 });
 //簡單的事件處理程序,響應自onChange,onSelect事件,按照上面的Jcrop調用
 function showCoords(obj) {
     $("#x").val(obj.x);
     $("#y").val(obj.y);
     $("#w").val(obj.w);
     $("#h").val(obj.h);
     if (parseInt(obj.w) > 0) {
  //計算預覽區域圖片縮放的比例,通過計算顯示區域的寬度(與高度)與剪裁的寬度(與高度)之比得到
  var rx = $("#preview_box").width() / obj.w;
  var ry = $("#preview_box").height() / obj.h;
  //通過比例值控制圖片的樣式與顯示
  $("#previewImg").css( {
      width : Math.round(rx * $("#srcImg").width()) + "px", //預覽圖片寬度為計算比例值與原圖片寬度的乘積
      height : Math.round(rx * $("#srcImg").height()) + "px", //預覽圖片高度為計算比例值與原圖片高度的乘積
      marginLeft : "-" + Math.round(rx * obj.x) + "px",
      marginTop : "-" + Math.round(ry * obj.y) + "px"
  });
     }
 }
}
在使用jcrop前一定要先將$(「」).jcrop();進行預初始化,否則沒有效果。
 還有一種調用的方法,
復制代碼 代碼如下:
    var api = $.Jcrop('#cropbox',{
    onChange: showPreview,
    onSelect: showPreview,
    aspectRatio: 1
    });
這種方法是將Jcrop生成的對象賦給一個全局變數,這樣操作就會比較方便。
通過上面的js,就將X軸坐標、Y軸坐標、高度H、寬度W這個四個值傳遞給後台了,後台就只需要根據這四個值
進行放大處理,然後切割即可。
 Action
復制代碼 代碼如下:
/**
     * 裁剪頭像
     */
    public String cutImage(){
 /*
  * 獲取參數
  * 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");   
 //獲取文件真實路徑
 //獲取文件名
 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
復制代碼 代碼如下:
public class ImageCut {
    /**
     * 圖片切割
     * @param imagePath  原圖地址
     * @param x  目標切片坐標 X軸起點
     * @param y     目標切片坐標 Y軸起點
     * @param w  目標切片 寬度
     * @param h  目標切片 高度
     */
    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();    // 源圖高度
     //若原圖大小大於切片大小,則進行切割
     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();
 }
    }
}
⑶ jquery.jcrop和imgareaselect插件的兼容性分別如何
之前專門寫的一個基於Jcrop圖片裁剪實現的插件文章,希望對你有幫助 http://blog.csdn.net/sq111433/article/details/17562703
⑷ jquery 的 Jcrop onChange引入多個方法
jcrop從服務端下載圖片,再用jcrop載入就可以了。
⑸ ie瀏覽器下支持jquery jcrop嗎
keySupport:false
加上面的配置屬性就可以了
⑹ 如何用CropBox實現頭像裁剪並與java後台交互
主流的前端jQuery 圖像裁剪插件有Jcrop和CropBox,前者是將原圖和需要裁剪的參數(裁剪的各點坐標,旋轉角度等)傳到後台,然後由後台完成實際的裁剪和後續操作。
CropBox實現功能相對較少,但操作更簡單,它的原理是:
將裁減後的圖片通過base64編碼,然後轉化為blob格式發送到伺服器,伺服器完成解碼即可,官網介紹可以看github上的說明和Demo
核心js函數只有兩個:
getDataURL 將裁剪後的圖片簡單以base64編碼後的結果,用於實時預覽,當然也可以將它直接傳到伺服器,然後解碼為png格式
getBlob 上傳圖片為Blob格式
首先貼出兩個函數的源碼:
getDataURL: function ()
{
var width = this.thumbBox.width(),
height = this.thumbBox.height(),
canvas = document.createElement("canvas"),
dim = el.css('background-position').split(' '),
size = el.css('background-size').split(' '),
dx = parseInt(dim[0]) - el.width()/2 + width/2,
dy = parseInt(dim[1]) - el.height()/2 + height/2,
dw = parseInt(size[0]),
dh = parseInt(size[1]),
sh = parseInt(this.image.height),
sw = parseInt(this.image.width);
canvas.width = width;
canvas.height = height;
var context = canvas.getContext("2d");
context.drawImage(this.image, 0, 0, sw, sh, dx, dy, dw, dh);
var imageData = canvas.toDataURL('image/png');
return imageData;
},
getBlob: function()
{
var imageData = this.getDataURL();
var b64 = imageData.replace('data:image/png;base64,','');
var binary = atob(b64);
var array = [];
for (var i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
return  new Blob([new Uint8Array(array)], {type: 'image/png'});
},
⑺ 哪位大神有jquery無刷新上傳圖片、裁剪、保存圖片的案例啊
jquery.jcrop   圖片裁剪(很好很強大)
     http://deepliquid.com/content/Jcrop.html                    |
            http://www.jb51.net/article/18273.htm
⑻ jquery jcrop 頭像上傳能放大縮小嗎
一般的頭像上傳大小的縮放都是由後端處理的。
jquery jcrop
是用來做圖片剪切的(但圖片的剪切實際也是由後端處理的)jcrop只是提供了要剪切的坐標。
⑼ jquery jcrop 雙擊選好的部分 這個雙擊事件怎麼寫 我的目的是吧 是把 x y w h 傳到後台
最新版的jcrop介面只提供了  四種事件
crop.activate    Active widget has changed    
crop.update    Widget dragging or resizing (frequent!)    
crop.change    Widget dragging or resizing finished    
crop.remove    Widget removed from stage    
雙擊事件的話可以使用 
jcp.listen("dblclick", (widget, e) => { console.log(e);})
來捕捉事件,但這個widget一直是undefined,沒法直接獲取到當前widget,
但是可以獲取直接獲取當前活動的widget(stage.active)
位置就在active.pos
老版本的jcrop 直接在onDblClick綁定事件就好
⑽ jQuery函數Jcrop實現對旋轉問題,怎麼解決
方法如下:
jQuery(function(){
  $('#photo').Jcrop();
 $("input[name='rotate1']").click(function() {
     $("#photo").rotate(45);
     return false;
  });
});
