第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

canvas 裁剪空白區(qū)域

canvas 裁剪空白區(qū)域

鴻蒙傳說 2018-11-07 13:18:05
用 canvas 做了一個電子簽名,可是用戶簽名后留白太多。有什么辦法可以截取空白區(qū)域嗎?示例原圖:我是在簽字過程中,獲取鼠標經(jīng)過的區(qū)域,從而得到如下圖紅色區(qū)域坐標。然后傳給 img 對象,再繪制到 canvas 上裁剪紅色區(qū)域。有什么其他方式可以做到嗎?謝謝!
查看完整描述

1 回答

?
人到中年有點甜

TA貢獻1895條經(jīng)驗 獲得超7個贊

首先是可以做到的, canvas.getContext('2d').getImageData(0, 0, 寬, 高)會返回一個當前canvas的圖像數(shù)據(jù)對象,其中有一個data屬性,是一個一維數(shù)組,這個一維數(shù)組,每4個下標分別代表了一個像素點的R,G,B,A的值,樓主只需要遍歷這些值就能找到邊界了.下面是偽代碼實現(xiàn)

var canvas = document.createElement('canvas')

canvas.width = 200

canvas.height = 210

document.body.appendChild(canvas)


var ctx = canvas.getContext('2d')


ctx.beginPath()

ctx.moveTo(0,50)

ctx.lineTo(100,50)

ctx.lineTo(100,25)

ctx.fill() // 出于演示目的隨便畫了個三角形


var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height).data


var lOffset = canvas.width, rOffset = 0,tOffset = canvas.height, bOffset = 0


for (var i = 0; i < canvas.width; i++) {

    for (var j = 0; j < canvas.height; j++) {

        var pos = (i + canvas.width * j) * 4

        if (imgData[pos] > 0 || imgData[pos + 1] > 0 || imgData[pos + 2] || imgData[pos + 3] > 0) {

            // 說第j行第i列的像素不是透明的

            // 樓主貌似底圖是有背景色的,所以具體判斷RGBA的值可以根據(jù)是否等于背景色的值來判斷

            bOffset = Math.max(j, bOffset) // 找到有色彩的最底部的縱坐標

            rOffset = Math.max(i, rOffset) // 找到有色彩的最右端


            tOffset = Math.min(j, tOffset) // 找到有色彩的最上端

            lOffset = Math.min(i, lOffset) // 找到有色彩的最左端

        }

    }

}

// 由于循環(huán)是從0開始的,而我們認為的行列是從1開始的

lOffset++

rOffset++

tOffset++

bOffset++

console.log(lOffset, rOffset, tOffset, bOffset) // 1 100 26 50

// 意思是說包含有像素的區(qū)域是 左邊第1行,到右邊第100行,頂部第26行,到底部50行

// 此時如果你想找到外部區(qū)域的話,就是 left和top減1  right和bottom加1的區(qū)域

// 分別是0, 101, 25, 51.這個區(qū)間能夠剛好包裹住


查看完整回答
反對 回復(fù) 2018-12-13
  • 1 回答
  • 0 關(guān)注
  • 387 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號