小議頭像預覽裁剪上傳的實現


在做頭像上傳的時候,瀏覽器默認是無法取得本地圖片的,當然 HTML5 是可以的。
不過IE6-8怎么破?
目前比較通用的方案都是 flash 解決。

說道頭像預覽和裁剪,我最熟悉的就是 Discuz 的那個了,非常方便好用。
不僅可以選擇本地圖片,還能直接調用攝像頭拍攝,當然前提是你必須有個攝像頭。

於是我心血來潮的想把他剝離出來給項目用,於是有就了此文。。
我就不說怎么提取怎么調用,就簡單的談談他是怎么處理圖片好了,反正不是我們想的那樣,和我想的出入非常大。

這個插件呢,差不多分為四步處理:
1. 前台用js生成IE或現代瀏覽器用的flash嵌入標簽
2. 通過 flash 選擇圖片上傳給服務器 (沒錯, 這貨是直接上傳原圖的)
3. 讀取剛剛上傳到服務器的圖片,進行裁剪處理。
4. 把裁剪好的圖片分別縮放為 200x200, 120x120, 48x48 的圖,當然不文件,而是編碼數據提交給后台,
    沒仔細看是什么編碼,反正后台解碼后fopen寫入文件的。

當然果然是攝像頭拍攝的話,2, 3步變為拍攝,1, 4一樣的。
好了,看過步驟,相信大家和我一樣灰常桑心,,說好的預覽,腫么變成上傳后預覽了,那要你何用?
難道僅僅為了裁剪而調用這么變態的插件么?這不是我的作風。(當然目前用他,因為項目時間有限,之后再重寫)

下面我們來談下 js 實現思路吧。
既然沒辦法預覽(HTML5除外),那么我們就先上傳,然后"裁剪"即可。
FormData或iframe做偽ajax上傳,得到文件路徑后,就可以預覽,然后"裁剪"即可。
當然不是真正的裁剪,也是偽裁剪,只是記錄坐標后提交給后台,讓后台為我們真正的裁剪。
因為圖片第一步上傳了,第二步我們只要ajax提交裁剪區域坐標即可,不需要重新上傳圖片。
相信聰明的你一定想到怎么實現了。

當然你也可以參考 碳酸次鈷 寫的《在線圖片裁剪(兼容IE8)》。
其實如果不是濾鏡的兼容性和安全問題就可全兼容,
當然我的思路就是直接上傳后裁剪,所以是真正的全兼容。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM