1. 程式人生 > >美圖秀秀api實現圖片的裁剪及美化

美圖秀秀api實現圖片的裁剪及美化

onload 上傳 loaddata -- image init 引入 移除 url

美圖秀秀不僅有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實現圖片的裁剪及美化