JavaScript實現瀏覽器本地的圖像移動、大小調整和裁剪

JavaScript 編程語言 HTML HTML5 IT豆豆 IT豆豆 2017-08-30

本文介紹如何使用和HTML5 Canvas元素來移動、調整大小和裁剪圖像,這些技術適用於圖片編輯器、照片分享等應用場景。

一般而言圖像的剪裁會放在服務端進行,但是圖片傳送會消耗較多的流量。藉助HTML5 Canvas繪圖功能,可以在瀏覽器端以比較簡單的方式來實現。

代碼和在線演示地址:http://ikinsoft.com/3ddemo/CanvasImage.html,可以先操作下,有個整體印象,界面截圖如下:

JavaScript實現瀏覽器本地的圖像移動、大小調整和裁剪

構建界面佈局和元素

HTML頁面由源圖片Crop操作按鈕裁剪矩形框以及圖片容器(含4個角的調整小方塊)組成,主體代碼如下:

JavaScript實現瀏覽器本地的圖像移動、大小調整和裁剪

img[class=resize-image] 元素為本服務器圖片資源,是要進行調整和裁剪的圖片。注意出於安全策略,不能在瀏覽器中跨域操作圖片,否則會出現類似下面的報錯信息:

JavaScript實現瀏覽器本地的圖像移動、大小調整和裁剪

button[class=btn-crop] 是SVG矢量圖標按鈕。

div[class=overlay] 元素是裁剪矩形框。

此外圖片容器使用JavaScript動態包裝在 img[class=resize-image] 元素外部:

JavaScript實現瀏覽器本地的圖像移動、大小調整和裁剪

實現大小調整的功能

大小調整通過先在Canvas上繪製一個對應大小的圖像,接著通過Canvas的toDataURL方法轉化為base64編碼的字符串形式的圖片數據。最後把該data:URL通過設置為img的src屬性,附著到目標圖像元素上。

JavaScript實現瀏覽器本地的圖像移動、大小調整和裁剪

實現移動功能

通過mouseup事件獲取新的位置,然後通過的offset方法來完成元素偏移。

JavaScript實現瀏覽器本地的圖像移動、大小調整和裁剪

實現裁剪功能

這個主要是實現一個居中的覆蓋矩形(overlay),接著通過計算背景圖片和該覆蓋矩形的偏移來獲取圖片裁剪區域的座標,

然後再通過Canvas的drawImage和toDataURL完成裁剪圖的繪製。

JavaScript實現瀏覽器本地的圖像移動、大小調整和裁剪

最後再加上一些移動功能,如觸摸事件(Touch)和手勢(Gesture)檢測的支持。

相關推薦

推薦中...