美圖秀秀api實現圖片的裁剪及美化
美圖秀秀不僅有PC版、手機版等客戶端的軟件,還有Web開方接口,可以在web頁面上調用美圖秀秀的api接口,實現圖片的編輯。像淘寶、網易、qq空間、新浪微博等大廠都使用過該接口。
官網地址:http://open.web.meitu.com,使用方法也很簡單,直接參照官網文檔:
第一步:環境配置
下載 crossdomain.xml 文件,然後把 crossdomain.xml 文件放到保存圖片的服務器上根目錄下,例如您的保存圖片的服務器地址為: http://www.example.com,那麽 crossdomain.xml 的路徑為:http://www.example.com/crossdomain.xml 。
部署 crossdomain.xml 的目的是授權來自美圖秀秀的flash向您的站點上傳圖片。
【備註】由於本地測試會被flash安全沙箱攔住,請自行搭建web服務器,在web 環境中測試。
第二步:引入JS
把以下JS代碼放到<head>與</head>之間
1. <script src="http://open.web.meitu.com/sources/xiuxiu.js" type="text/javascript"></script>
2. <!-- 提示:: 如果你的網站使用https, 將xiuxiu.js地址的請求協議改成https即可 -->
3. <script type="text/javascript">
4. window.onload=function(){
5. /*第1個參數是加載編輯器div容器,第2個參數是編輯器類型,第3個參數是div容器寬,第4個參數是div容器高*/
6. xiuxiu.embedSWF("altContent",3,"100%","100%");
7. //修改為您自己的圖片上傳接口
8. xiuxiu.setUploadURL("http://web.upload.meitu.com/image_upload.php");
9. xiuxiu.setUploadType(2);
10. xiuxiu.setUploadDataFieldName("upload_file");
11. xiuxiu.onInit = function ()
12. {
13. xiuxiu.loadPhoto("http://open.web.meitu.com/sources/images/1.jpg");//修改為要處理的圖片url
14. }
15. xiuxiu.onUploadResponse = function (data)
16. {
17. //alert("上傳響應" + data); 可以開啟調試
18. }
19. }
20. </script>
實現效果如下:
下面說一些需要註意的地方:
1、 必須要有自己的文件上傳服務端。美圖秀秀編輯完成後,點擊保存就會調用我們自己的文件上傳接口,把編輯好的圖片保存到我們自己的服務器上。
2、 美圖秀秀編輯器有幾種模式,
xiuxiu.embedSWF(container,editorType,width,height,id);的第二個參數editorType可以指定要嵌入的編輯器類型(1為輕量編輯,2為輕量拼圖,3為完整版,5為頭像編輯器,默認值1)
3、 加載圖片接口不僅可以傳入圖片URL,也可以傳base64。例如有些圖片是內網URL,美圖秀秀插件不能訪問內網的圖片,就可以把圖片先轉成base64,再傳給美圖秀秀。
單張圖片:
xiuxiu.loadPhoto("http://open.web.meitu.com/sources/images/1.jpg");
單張base64的圖片(demo):
xiuxiu.loadPhoto("/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja…", true);
多張圖片(demo):
xiuxiu.loadPhoto(["http://open.web.meitu.com/sources/images/1.jpg"]);
多張base64的圖片:
xiuxiu.loadPhoto(["/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja…"], true);
4、 點了關閉按鈕編輯器不關閉的問題。默認情況下點擊關閉按鈕,編輯器是不會自己關閉,只會調度關閉事件,然後自己寫代碼把編輯器關掉,如下:
xiuxiu.onClose = function (id){
//以下根據自身實際情況自己寫代碼關閉
...
}
5、 再次調用編輯器總是加載同一張圖片,怎樣更換圖片?
嵌入美圖編輯器後,在一些瀏覽器下,每次點開編輯器,編輯器中呈現的都是同一張圖片,雖然調用xiuxiu.loadPhoto的時候傳的圖片URL都是不一樣。
原因解析:因為你調用xiuxiu.loadPhoto是在xiuxiu.onInit事件觸發後才調用的,如果在關閉編輯器的時候,沒有完全移除這個flash元素,而是簡單的隱藏,那這個flash在它的生命周期內只會觸發一次xiuxiu.onInit,隱藏再重現之後不會觸發xiuxiu.onInit,自然不會再調xiuxiu.loadPhoto,因此呈現的都是同一張圖片。
當關閉時需要把flash元素清除掉:
xiuxiu.onClose = function (id){
//js自行移除
}
6、 自定義增刪功能模塊。通過高級接口 customMenu 設定自定義菜單,可以自行組合你要的功能。
美圖秀秀還有其他的接口,例如指定打開編輯器默認進入的菜單等等。
美圖秀秀api實現圖片的裁剪及美化