用canvas去掉图片周围的透明区域(去白边)
//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;
}