canvas實作圖片塗鴉功能(附程式碼)

不言
發布: 2018-11-16 17:17:58
轉載
5629 人瀏覽過

這篇文章帶給大家的內容是關於canvas實現圖片塗鴉功能(附程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

需求

  1. 需要對圖片進行標註,匯出圖片。

  2. 需要標註N多圖片最後同時儲存。

  3. 需要根據多邊形區域資料(區域、顏色、名稱)標註。

對應方案

  1. 用canvas實作塗鴉、圓形、矩形的繪製,最後產生圖片base64編碼用來上傳

  2. 大量圖片批次上傳很耗時,為了提高使用者體驗,改為只實現圓形、矩形繪製,最終保存成座標,下次顯示時根據座標再繪製。

  3. 多邊形區域的顯示是根據座標點繪製,名稱顯示的位置為多邊形質心。

程式碼

  
登入後複製

必須傳入的參數

  • ##圖片路徑

url: string
登入後複製
  • 繪圖區域寬度

width: string
登入後複製
  • 繪圖區域高度

height: string
登入後複製

選擇傳入的參數

  • 是否可以繪製,預設true

canDraw: boolean
登入後複製
登入後複製
  • 座標點資訊,不傳入則不繪製

info: string
登入後複製
  • #是否可繪製,預設true

canDraw: boolean
登入後複製
登入後複製
  • 繪圖顏色,預設red

lineColor: string
登入後複製
  • 繪圖筆寬度,預設2

    ##
    lineWidth: number
    登入後複製
    #繪圖筆類型,rec、circle,預設rec
  • lineType: string
    登入後複製
可以呼叫的方法

##清空畫布
  • clean()
    登入後複製
傳迴座標點資訊
  • #

    getInfo()
    登入後複製
  • 特殊說明

canvas物件不能獲得座標,是透過父元素座標取得的,所以該元件的父元素以上的層級不能有太多的定位、嵌套,否則繪製座標會偏移。
  • 網域不同的圖片可能有跨域問題,看過很多資料沒有太好的辦法,最後專案中是用node服務做了一個圖片轉為base64的接口,再給canvas繪製解決的。不一定適用於其他項目,如果有更好的辦法解決歡迎分享。
  • 匯出座標點資料只能匯出規則圖案的座標點,因為隨意塗鴉的座標點太多時會崩潰的(雖然沒試過具體到什麼程度會崩潰),如果有高性能的實現方式歡迎分享。
  • 如果塗鴉後儲存再請求圖片url出現請求不到的情況,是因為CDN快取的問題,在圖片路徑後面拼個隨機碼就可以解決。
  • #

以上是canvas實作圖片塗鴉功能(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!