canvas實現的前端壓縮裁剪工具

2021-09-24 06:35:31 字數 803 閱讀 6456

最近專案中應用到canvas,見識到了canvas技術的強大,突然想到之前用過的開源的裁減庫,大多數都是劃出乙個裁剪框,將座標點和長寬傳到服務端,由後台做裁剪,正好有空,做了個基於canvas的純前端裁剪壓縮工具,支援pc和移動端平台。

使用原生的url api 讀取本地選取的檔案(原始檔);

使用canvas的繪圖功能(drawimage)將源繪製到畫板上,兩種繪製策略:'contain'模式等比壓縮居中顯示;'cover'模式選取長寬比相對外部container較小的一端適配。類似於background-size屬性的cover和contain;

使用滑鼠事件使背景畫板可移動;

根據裁剪框大小配置在畫板中心繪製裁剪框,使其可resize;

當畫板移動或resize裁剪框時,動態繪製對應的裁剪區域;

根據質量引數,對裁剪區域使用todataurl方法壓縮裁剪,拿到裁剪圖的base64格式,對base64進行blob化處理,最終可輸出base64、blob和arraybuffer格式的裁剪結果。

對外暴露clip方法,返回乙個裁剪物件。

const c = clip()

// c.clip64:base64結果

// c.clipblob:blob結果

// c.cliparraybuffer:arraybuffer結果

複製**

github位址

pc demo位址

mobile demo位址

因為時間關係,採用es6編碼,沒有做很多的相容性考慮,可能存在一些體驗問題。

後期有空了再改進,歡迎指正。

前端以canvas實現驗證碼詳解

隨機凌亂字元生成隨機的背景色調隨機出現的遮擋線與點 要實現此功能我們可以使用css3中canvas元素,通過js我們可以 非常簡單的實現前端生成驗證碼。我們先在html中建立乙個canvas元素用於存放驗證碼 注意其中的width和height屬性是沒有px的 而後根據需求,隨機是很重要的,為了方便...

裁剪效果的實現 ClippingNode

1 首先要建立模板的精靈 建立模板是用來遮掩或者顯示當前模板的範圍的。sprite spritemb sprite create messageboard.png 2 然後使用剛才建立的模板精靈來建立模板,並將spritemb使用addchild 新增到模板中 node stencil node c...

numpy中的裁剪 壓縮和累乘

主要介紹三個函式 以下numpy都用np代替 np.ndarray.clip min,max 大於max的值會被重設成max,小於min的值會被重設成min 不指定min max預設為min 可以只選乙個 也可以都選 in 47 a np.arange 1,10 in 49 a.clip max 4...