上傳圖片,用Jcrop剪裁影象並用PHP獲取剪裁後的影象
在此過程中,筆者遇到了一些往常沒有遇到過的問題,通過Google和查詢API找到了解決問題的方法,在此整理出來與遇到同樣問題的朋友們分享。
首先,筆者在用input:file上傳圖片的時候,更改了控制元件了樣式,用input:text和input:button這兩個控制元件來代替input:file,原來的input:file控制元件隱藏,如此,只需要更改後兩個控制元件的樣式,並且新增他們與input:file的關聯即可。具體程式碼如下:
HTML:
<span style="font-family:Times New Roman;font-size:14px;"><input type=file id="xxx" name=orifile style="xxx;display:none;" onChange="$('input[name=\'filetext\']').val($(this).val());"/> <input type=text name=filetext class="sss" style="xxx"/> <input type=button value="submit" onclick="$('input[name=\'orifile\']').click();" class="xxx" style="xxx"/></span>
筆者在系統中,需要繫結input:file控制元件的onChange事件,而且能夠在該控制元件能夠連續不斷的觸發onChange事件。在jquery1.7之前的版本中,可以通過jQuery.live()事件進行繫結,但是在jquery1.7之後的版本,live方法已經被棄用了,轉而取代它的是on方法,可以筆者在通過on方法繫結onChange事件時,只能夠觸發一次。
在查閱過大量資料以後,筆者對程式碼進行了改進,改進的過程如下:
JAVASCRIPT:
<span style="font-family:Times New Roman;font-size:14px;">$(document).on("change", "#xxx", function(){ 函式體... });</span>
靜態的方法可以通過$("#xxx").on("change", function(){});的寫法進行,而如果input:file是動態方法生成的控制元件,則需要用程式碼框中的方法,因為onChange事件需要在頁面載入之後才能載入。
筆者使用Jcrop這款JQuery外掛來處理影象剪裁的,這款外掛相對比較簡單易學,有三種方法可以對外掛進行載入,筆者建議使用Jcrop的api,具體程式碼如下:
JAVASCRIPT:
<span style="font-family:Times New Roman;font-size:14px;">/*選框大小固定為1000*160,不允許更改選框大小*/ var api; var opt = {}; opt.allowResize = false; //不允許更改選框大小 opt.allowSelect = false; //不允許建立新選框 opt.allowMove = true; //允許拖動選框 opt.boxWidth = 1100; //畫布寬度 opt.boxHeight = 500; //畫布高度 opt.aspectRatio = 6.25; //圖片的橫縱比 api = $.Jcrop("#jcrop", opt); //建立外掛 api.setImage(/*圖片路徑*/path); //載入圖片 api.setOptions({onSelect: getCoords}); //新增選項,onSelect是建立選框之後觸發的事件 api.animateTo([0, 0, 1000, 160]); //選框生成動畫 api.setSelect([0, 0, 1000, 160]); //生成選框 /*事件觸發函式*/ function getCoords(obj) { /*以下引數需要通過ajax傳送至php後臺*/ selectw = parseInt(obj.w); //選框寬度 selecth = parseInt(obj.h); //選框高度 selectx = parseInt(obj.x); //選框起點x座標 selecty = parseInt(obj.y); //選框起點y座標 }</span><span style="font-size:18px;font-family: KaiTi_GB2312;"> </span>
將上述獲得的引數傳至PHP後臺,使用PHP自帶函式進行處理:
<span style="font-family:Times New Roman;font-size:14px;">$type = exif_imagetype($path); //獲得圖片型別
switch ($type) {
case IMAGETYPE_GIF:
$im1 = imagecreatefromgif($path); //建立一個跟原圖一樣大小的圖片
break;
case IMAGETYPE_JPEG:
$im1 = imagecreatefromjpeg($path); //建立一個跟原圖一樣大小的圖片
break;
case IMAGETYPE_PNG:
$im1 = imagecreatefrompng($path); //建立一個跟原圖一樣大小的圖片
break;
default :
exit();
break;
}
$new_img = imagecreatetruecolor($w, $h); //建立一個使用者剪裁寬高的黑白圖片
imagecopyresampled($new_img, $im1, 0, 0, $x, $y, $w, $h, $w, $h); //將原圖拷貝到新建立剪裁區域的圖片中
switch ($type) {
case IMAGETYPE_GIF:
imagegif($new_img, $newsrc); //按新路徑儲存圖片
break;
case IMAGETYPE_JPEG:
imagejpeg($new_img, $newsrc, 100); //按新路徑儲存圖片
break;
case IMAGETYPE_PNG:
imagepng($new_img, $newsrc, 9); //按新路徑儲存圖片
break;
default:
exit();
break;
}</span>
這樣圖片就剪裁完成了。
剪裁前的效果:
剪裁後的效果:
相關推薦
上傳圖片,用Jcrop剪裁影象並用PHP獲取剪裁後的影象
在此過程中,筆者遇到了一些往常沒有遇到過的問題,通過Google和查詢API找到了解決問題的方法,在此整理出來與遇到同樣問題的朋友們分享。 首先,筆者在用input:file上傳圖片的時候,更改了控制元件了樣式,用input:text和input:butto
layer 彈框 cropper 裁剪上傳圖片,thinkphp 3 使用 CropAvatar.class.php
最近要做一個上傳裁剪圖片功能,但是網上收出來的東西,知識點都是對的。但是就是沒說清楚,也無法連續起來用。 經過自己整理出來的一套程式碼,親測可用! 不用多說,直接上菜。 PS:搜尋引擎收錄的還是很垃圾...... 呼叫頁面,簡單程式碼(可複用) <img src="{$info.co
vue, vux調用微信點擊圖片,上傳圖片,刪除圖片,接口,其中選圖接口,蘋果手機顯示有問題,查看不到圖片,提交會提示fail not exist,解決如下
ssd fff sset ogre 默認 item config tom ima <template> <div v-cloak v-show="show"> <div v-show="mailbox">
ueditor上傳圖片不好用,訪問ueditor中的controller.js變成下載檔案
由於疏忽了web.xml中的servlet配置問題,將urlpattern配置成了"/" <servlet-mapping> <servlet-name>test</servlet-name> &
使用 CKEditor 上傳圖片, 粘貼屏幕截圖
要求 license 回調 wan ade 做成 操作 rms 粘貼 之前寫過wangEditor,那真是好用,文檔也清晰,半天就搞定了,無奈沒有對應license,只好選擇別的。 外語一般,閱讀理解都靠蒙。CKEditor官方文檔看的我雲裏霧裏,國內的博客比較少,
百度WebUploader上傳圖片,圖片回顯編輯,查看
set 唯一性 original 無需 同名 sch nag fin enum 頁面前端使用的是bootstrap,java後端springMVC , 上傳用的WebUploader,先說說上傳圖片,回顯編輯圖片在下一篇 如果僅僅只需要上傳圖片,不需要回顯進行編輯圖片,使用
html 上傳圖片,本頁預覽
html 上傳圖片 本頁預覽 直接上代碼<!DOCTYPE html><html><head><meta charset="UTF-8"><title>圖片上傳預覽</title><script type="text/j
C# 使用FileUpload控件上傳圖片,將文件轉換成二進制進行存儲與讀取
擴展 實現 bmi extension aaa 插入數據 問題 pup cat 狀況描述: 需要上傳文件,但是不想要保存到實體路徑下,便可以用該功能來實現。 效果圖: 點擊【Upload】按鈕,上傳文件到數據庫; 點擊【Preview】,預覽文件;
微信jssdk上傳圖片,一張一張的上傳 和 一次性傳好幾張
pla can 參數錯誤 其他 屬性 使用 down pop menu //html模板 <div class="zhaopin_3_2"> <div id="bbb"></div> &
小程序上傳圖片,排隊上傳
length 內容 ext 有效 ges mar 顯示 func 沒有 //沒有處理的wxml,但是有效果,可以簡單試驗一下 <view class=‘minbox1‘> <text class=‘red wzgs‘>*</text>
php 中使用cURL發送get/post請求,上傳圖片,批處理
cit gda 抓取 記錄 rem 學習 網頁 lose XML https://mp.weixin.qq.com/s/8luqMEd8xt8oJxFLLCU1XA 文章正文 cURL是利用url語法規定傳輸文件和數據的工具。php中有curl拓展,一般用來實現網絡抓取,模
微信小程式上傳圖片,視訊及預覽
wxml <!-- 圖片預覽 --> <view class='preview-warp' wx:if="{{urls}}"> <image src='{{urls}}' /> </view> <view class="prew_video"
tp3.2 ajax上傳圖片(可以用,樣式要自己寫)
html頁面 <form id="mbInfoForm" action="" method="POST"> <input type="hidden" name="idcard_up" id="idcard_up"> <table class="formTbl">
nodejs express 框架 上傳圖片,上傳頭像問題
上傳圖片總結: 必須 安裝’multer’模組 Npm I multer –S(手動輸入小寫) 第一步 App.js 裡面 掛載index路由之前寫入 app.use(express.static(path.join(__dirname, 'public'))); var mul
如何使用objective c上傳檔案,用flask接收檔案
flask是python中類似於php的伺服器元件。 ios提供了NSMutableArray和 dataTaskWithRequest用來使用http上傳資料。但是flask只支援基於表單格式的資料。 表單格式是在原始http資料上,提供了額為的資訊。如果直接使用ios的api把資料傳送給
layui-圖片上傳,可使用選擇圖片->上傳圖片,預覽圖片,刪除圖片(轉載)
原文地址:https://gitee.com/AMortal/codes/qt8m6zk30u1g4evr95jhx13 <!DOCTYPE html> <html> <head> <meta
利用ajax上傳圖片,並使用CURL呼叫介面
這是我第一次使用ajax上傳檔案,並且不通過form表單進行上傳,之前使用ajax上傳檔案時是藉助一個叫form.js的檔案,可以直接使用$.ajaxSumbmit直接提交表單,但這次不同,就是使用ajax上傳,並且將圖片資訊放在ajax要上傳的資料data陣列或物件中,怎麼
微信公眾號開發之選擇圖片,上傳圖片,下載圖片,顯示圖片
function clickImg(that){ wx.chooseImage({ count: 1, needResult: 1, sizeType: ['original', 'compressed'], // 可以指定是原圖還是壓
Spring MVC上傳圖片,Java二進位制圖片寫入資料庫,生成略縮圖
步驟:1.將圖片上傳到伺服器的一個磁碟目錄下。 2.將剛才上傳好的圖片寫入資料庫image欄位。 一、上傳圖片:使用的是spring mvc 對上傳的支援。 jsp 頁面: <form name="uploadForm" id="uploadForm" m
iOS整合七牛雲(上傳圖片,視訊,音訊等檔案)
用的CocoaPods匯入SDK platform :ios,'9.0' target '專案名' do pod 'AFNetworking' pod 'Qiniu' end 匯入標頭檔案 #import<QiniuSDK.h> #i