版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第php+croppic.js實現(xiàn)剪切上傳圖片功能最近需要實現(xiàn)裁剪圖片上傳,想起之前公司用到的一個插件,卻不知道叫什么名字了。
在網(wǎng)上找了有些時間,最終找到了這個網(wǎng)站。
/
因為官網(wǎng)文檔全部都是英文,所以看起來有些吃力,可以大概看懂80%,但是缺少詳細的案例說明,所以真正配置起來還是非常懵逼。
如果完全按照官網(wǎng)文檔的步驟,大概就是這樣的
下載安裝
官網(wǎng)提供兩種下載方式,第一種類似于SDK的wholewebsite,另外一種簡潔版croppic。前者提供了完整的項目結(jié)構(gòu)以及前后端案例,后者只有croppic.css、croppic.js、croppic.min.js三個文件。
基本使用
//css部分
#yourId{
width:200px;
height:150px;
position:relative;/*orfixedorabsolute*/
//html部分
divid="yourId"/div
//js部分
varoptions=[
uploadUrl:'圖片上傳地址',
cropUrl:'圖片裁切后發(fā)送的地址',
//等等各種參數(shù)配置信息
varcropperHeader=newCroppic('yourId',options);
Options參數(shù)
uploadUrl
uploadUrl:'制定上傳的地址',
uploadData:{
"dummyData":1,
"dummyData2":"text"
}
php處理時,和普通的上傳文件一模一樣,使用$_FILES['img']可以直接獲取文件信息,上傳并保存;使用$_REQUEST[]則直接可以獲取js中uploadData中的數(shù)據(jù)。
php在處理完成后,根據(jù)成功狀態(tài)返回如下json結(jié)構(gòu)
成功時
"status":"success",
"url":"返回成功后的圖片url地址",
"width":源圖片寬度,
"height":源圖片高度
}
注意:源圖片寬高獲取方式list($width,$height)=getimagesize($_FILES["img"]["tmp_name"]);
失敗時
"status":"error",
"message":"這里是你的失敗提示信息"
}
cropUrl
接下來是裁切圖片的請求,基本使用
varcropperOptions={
uploadUrl:'裁切后請求的地址',
uploadData:{
"dummyData":1,
"dummyData2":"text"
varcropperHeader=newCroppic('yourId',cropperOptions);
請求php的參數(shù)基本如下:
php端使用nezamy/route的request類獲取croppic.js裁切后發(fā)送過來的參數(shù)
$request=app('request');
//上傳服務(wù)器的圖片路徑
$imgUrl=$request-body['imgUrl'];
//原始圖片寬高
$imgInitW=$request-body['imgInitW'];
$imgInitH=$request-body['imgInitH'];
//新縮放的圖片寬高
$imgW=$request-body['imgW'];
$imgH=$request-body['imgH'];
//與縮放圖像相關(guān)的裁剪圖像的左上角
$imgY1=$request-body['imgY1'];
$imgX1=$request-body['imgX1'];
//裁剪圖像寬高
$cropW=$request-body['cropW'];
$cropH=$request-body['cropH'];
//角度
$angle=$request-body['rotation'];
其他參數(shù)就不用介紹了,文檔上面可以看,如果看不懂或者不太清晰的可以直接下載案例做參照,比文檔要詳細些。接下來的重頭戲在php端的處理。
PHP各種操作圖片GD庫
$temp_name="crop_temp_".uniqid();
$temp_path=sys_get_temp_dir()."/";
$output_filename=$temp_path.$temp_name;
$what=getimagesize($imgUrl);
//創(chuàng)建畫布并載入圖像
switch(strtolower($what['mime'])){
case'image/png':
$source_image=imagecreatefrompng($imgUrl);
$type='.png';
break;
case'image/jpeg':
$source_image=imagecreatefromjpeg($imgUrl);
$type='.jpeg';
break;
case'image/gif':
$source_image=imagecreatefromgif($imgUrl);
$type='.gif';
break;
default:
thrownew\Exception('不支持的圖片類型');
if(!is_writable(dirname($output_filename))){
thrownew\Exception('文件無法寫入');
//創(chuàng)建一幅真彩色的圖像,從而支持更為豐富的色彩,gif文件不可使用
$resizedImage=imagecreatetruecolor($imgW,$imgH);
if($type=='.png'){
//將黑色定義為透明色
imagecolortransparent($resizedImage,imagecolorallocate($resizedImage,0,0,0));
imagecopyresampled($resizedImage,$source_image,0,0,0,0,$imgW,$imgH,$imgInitW,$imgInitH);
//旋轉(zhuǎn)圖像
$rotated_image=$angleimagerotate($resizedImage,-$angle,0):$resizedImage;
//獲取圖像寬高
$rotated_width=imagesx($rotated_image);
$rotated_height=imagesy($rotated_image);
//旋轉(zhuǎn)后-縮放后
$dx=$rotated_width-$imgW;
$dy=$rotated_height-$imgH;
//裁剪旋轉(zhuǎn)后的圖片到圖像
$cropped_rotated_image=imagecreatetruecolor($imgW,$imgH);
if($type=='.png'){
//設(shè)置黑色為透明
imagecolortransparent($cropped_rotated_image,imagecolorallocate($cropped_rotated_image,0,0,0));
imagecopyresampled($cropped_rotated_image,$rotated_image,0,0,$dx/2,$dy/2,$imgW,$imgH,$imgW,$imgH);
//剪切圖像到規(guī)定區(qū)域
$final_image=imagecreatetruecolor($cropW,$cropH);
if($type=='.png'){
imagecolortransparent($final_image,imagecolorallocate($final_image,0,0,0));
imagecopyresampled($final_image,$cropped_rotated_image,0,0,$imgX1,$imgY1,$cropW,$cropH,$cropW,$cropH);
//最后輸出圖像到文件,就可以直接使用file_get_content('output_filename'.$type)獲取圖片了
imagepng($final_image,$output_filename.$type);
*這里需要進行上傳服務(wù)器操作
echojson_encode([
'status'='success',
'url'=$output_filename.$type,
//最后刪除緩存圖片
//unlink($output_filename.$type);
JS各種配置
varcrop_image_src='image_src';
varcroppedOptions={
cropUrl:'/m/tool/crop_pic/crop',
modal:true,
doubleZoomControls:false,
enableMousescroll:true,
imgEyecandyOpacity:0.4,
rotateFactor:90,
zoomFactor:20,
outputUrlId:'image_input',
//loadPicture:'加載圖片',
processInline:true,
loaderHtml:'divspanid="bubblingG_1"/spanspanid="bubblingG_2"/spanspanid="bubblingG_3"/span/div',
onBeforeImgUpload:function(){
crop_image_src=$('#image_input').val();
onAfterRemoveCroppedImg:function(){
varres=confirm('您是要使用原圖還是清除圖片?\n\r[確認]使用原圖,[取消]清除圖片');
if(res){
$('#image_input').val(crop_image_src);
$('#cropContainerEyecandy').prepend('imgsrc='+crop_image_src+'width="100%"
}else{
$('#image_input').val('');
$('.croppedImg').remove();
onReset:function(){
varres=confirm('您是要使用原圖還是清除圖片?\n\r[確認]使用原圖,[取消]清除圖片');
if(res){
$('#image_input').val(crop_image_src);
$('#cropContainerEyecandy').prepend('imgsrc='+crop_image_src+'width="100%"
}else{
$('#imag
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年四川現(xiàn)代種業(yè)集團科技創(chuàng)新中心有限公司分公司及權(quán)屬企業(yè)招聘備考題庫及1套完整答案詳解
- 2026年東蘭縣婦幼保健招聘備考題庫及參考答案詳解1套
- 2026年度鄭州市市直機關(guān)公開遴選公務(wù)員備考題庫參考答案詳解
- 2026年北京市建華實驗學(xué)校招聘備考題庫帶答案詳解
- 2026年P(guān)OPs環(huán)境行為與控制原理研究組科研財務(wù)助理招聘備考題庫及參考答案詳解1套
- 2026年天津市腫瘤醫(yī)院健康管理中心外包崗位招聘備考題庫及一套完整答案詳解
- 2026年成都錦環(huán)城市管理服務(wù)有限公司招聘備考題庫及答案詳解參考
- 2026年國廣國際在線網(wǎng)絡(luò)(北京)有限公司招聘備考題庫及完整答案詳解1套
- 2026年消防員專業(yè)面試火場心理抗壓能力測評練習題及詳解
- 2026年老年三力測試反應(yīng)能力訓(xùn)練題庫及答案
- 2025年大學(xué)《應(yīng)急管理-應(yīng)急管理法律法規(guī)》考試參考題庫及答案解析
- 創(chuàng)意美術(shù)生蠔課件
- 2025年新版考監(jiān)控證的試題及答案
- 2025年上海市事業(yè)單位教師招聘體育學(xué)科專業(yè)知識考試
- 小學(xué)六年級英語重點語法全總結(jié)
- 基于低軌衛(wèi)星數(shù)據(jù)的熱層大氣密度反演:方法、挑戰(zhàn)與應(yīng)用
- 2025年國家開放大學(xué)《管理學(xué)基礎(chǔ)》期末考試備考試題及答案解析
- 黑龍江省安達市職業(yè)能力傾向測驗事業(yè)單位考試綜合管理類A類試題帶答案
- (正式版)DB32∕T 5156-2025 《零碳園區(qū)建設(shè)指南》
- 2025年人教版八年級英語上冊各單元詞匯知識點和語法講解與練習(有答案詳解)
- 智慧林業(yè)云平臺信息化建設(shè)詳細規(guī)劃
評論
0/150
提交評論