我想保存没有透明区域的位图。
位图具有大的透明像素。
所以我想删除它
我怎样才能做到这一点?
我无法添加图片,所以用符号解释。
我不想裁剪功能。
我希望使用过滤器
┌────────────────────────┐
│ 透明区域
│ ┌────────┐
│ 裁剪这个
└────────┘
└────────────────────────┘
要查找位图的非透明区域,请在 x 和 y 中迭代位图并查找非透明区域的最小值和最大值。然后将位图裁剪到这些坐标。
Bitmap CropBitmapTransparency(Bitmap sourceBitmap)
{
int minX = sourceBitmap.getWidth();
int minY = sourceBitmap.getHeight();
int maxX = -1;
int maxY = -1;
for(int y = 0; y < sourceBitmap.getHeight(); y++)
{
for(int x = 0; x < sourceBitmap.getWidth(); x++)
{
int alpha = (sourceBitmap.getPixel(x, y) >> 24) & 255;
if(alpha > 0) // pixel is not 100% transparent
{
if(x < minX)
minX = x;
if(x > maxX)
maxX = x;
if(y < minY)
minY = y;
if(y > maxY)
maxY = y;
}
}
}
if((maxX < minX) || (maxY < minY))
return null; // Bitmap is entirely transparent
// crop bitmap to non-transparent area and return:
return Bitmap.createBitmap(sourceBitmap, minX, minY, (maxX - minX) + 1, (maxY - minY) + 1);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)