PHP+ajaxfileupload+jcrop外掛程式完美實現頭像上傳剪裁_php執行個體

來源:互聯網
上載者:User
昨天花了點時間整合了一下頭像外掛程式 東拼西湊的成果 先來看下效果

1.先使用ajaxfileupload外掛程式做非同步上傳。這個地方我本來想做個上傳進度的效果,但技術有限失敗了。上傳按鈕我還做了一個檔案大小的限制,但是由於瀏覽器安全色性的問題,不完美在IE6--IE9之間還有很多問題需要解決

getFileSize函數是用於判斷檔案大小的函數

複製代碼 代碼如下:
function getFileSize(fileName) {
var byteSize = 0;
//console.log($("#" + fileName).val());
if($("#" + fileName)[0].files) {
var byteSize = $("#" + fileName)[0].files[0].size;
}else {
//此處由於有瀏覽器安全色問題 還沒完成大小判斷的邏輯
}
//alert(byteSize);
byteSize = Math.ceil(byteSize / 1024) //KB
return byteSize;//KB
}

2.按鈕上傳事件綁定

複製代碼 代碼如下:
$("#btnUpload").click(function () {
var allowImgageType = ['jpg', 'jpeg', 'png', 'gif'];
var file = $("#file1").val();
//擷取大小
var byteSize = getFileSize('file1');
//擷取尾碼
if (file.length > 0) {
if(byteSize > 2048) {
alert("上傳的附件檔案不能超過2M");
return;
}
var pos = file.lastIndexOf(".");
//截取點之後的字串
var ext = file.substring(pos + 1).toLowerCase();
//console.log(ext);
if($.inArray(ext, allowImgageType) != -1) {
ajaxFileUpload();
}else {
alert("請選擇jpg,jpeg,png,gif類型的圖片");
}
}
else {
alert("請選擇jpg,jpeg,png,gif類型的圖片");
}
});

3.在上傳成功後返回圖片路徑,並初始化圖片裁剪。圖片裁剪就直接用ajax請求到php

複製代碼 代碼如下:
function ajaxFileUpload() {
$.ajaxFileUpload({
url: 'action.php', //用於檔案上傳的伺服器端請求地址
secureuri: false, //一般設定為false
fileElementId: 'file1', //檔案上傳空間的id屬性
dataType: 'json', //傳回值類型 一般設定為json
success: function (data, status) //伺服器成功響應處理函數
{
//var json = eval('(' + data + ')');
//alert(data);
$("#picture_original>img").attr({src: data.src, width: data.width, height: data.height});
$('#imgsrc').val(data.path);
//alert(data.msg);

//同時啟動裁剪操作,觸發裁剪框顯示,讓使用者選擇圖片地區
var cutter = new jQuery.UtrialAvatarCutter({
//主圖片所在容器ID
content : "picture_original",
//縮圖配置,ID:所在容器ID;width,height:縮圖大小
purviews : [{id:"picture_200",width:200,height:200},{id:"picture_50",width:50,height:50},{id:"picture_30",width:30,height:30}],
//選取器預設大小
selector : {width:200,height:200},
showCoords : function(c) { //當裁剪框變動時,將左上方相對圖片的X座標與Y座標 寬度以及高度
$("#x1").val(c.x);
$("#y1").val(c.y);
$("#cw").val(c.w);
$("#ch").val(c.h);
},
cropattrs : {boxWidth: 500, boxHeight: 500}
}
);
cutter.reload(data.src);
$('#div_avatar').show();
},
error: function (data, status, e)//伺服器響應失敗處理函數
{
alert(e);
}
})
return false;
}

$('#btnCrop').click(function() {
$.getJSON('action2.php', {x: $('#x1').val(), y: $('#y1').val(), w: $('#cw').val(), h: $('#ch').val(), src: $('#imgsrc').val()}, function(data) {
alert(data.msg);
});
return false;
});

4.HTML檔案代碼如下

複製代碼 代碼如下:
















現在還很粗糙,功能還有很多需要完善的地方。大家有興趣的話,就拿去使用吧。如果完善了進度條和檔案大小的功能,記得也分享給我一份哦。

附上源碼 http://www.php.net/codes/174384.html

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.