用canvas去掉图片周围的透明区域(去白边)

时间:2025-02-14 11:30:14
//bitmap 包含关于img的各种参数信息 export function getImageBoundRect(bitmap: | any, threshold: number=0) { let img = ; let canvas: HTMLCanvasElement = ("canvas"); = ; = ; var _ctx: CanvasRenderingContext2D | any = ("2d"); _ctx.drawImage(img, 0, 0, , , 0, 0, , ); //裁剪空白区域 var imgData = _ctx.getImageData(0, 0, , ).data; var lOffset = , rOffset = 0, tOffset = , bOffset = 0; for (var i = 0; i < ; i++) { for (var j = 0; j < ; j++) { var pos = (i + * j) * 4; if (imgData[pos + 3] > threshold) { // 这个条件说第j行第i列的像素不是透明的 bOffset = (j, bOffset); // 找到不透明区域最底部的纵坐标 rOffset = (i, rOffset); // 找到不透明区域的最右端 tOffset = (j, tOffset); // 找到不透明区域的最上端 lOffset = (i, lOffset); // 找到不透明区域的最左端 } } } // 由于循环是从0开始的,而我们认为的行列是从1开始的 lOffset++; rOffset++; tOffset++; bOffset++; var rect = new (lOffset, tOffset, rOffset - lOffset, bOffset - tOffset); = rect; return rect; }