剪裁图片透明边界

请尊重原创,转载请注明出处: https://blog.csdn.net/mabeijianxi/article/details/82085890

不管是 Android、iOS、PC都可能需要面临一些图片处理的时候。

笔者遇到了一个截图的,在屏幕里只截出3D渲染的那层 layer ,比如背景绘制的是摄像头采集是数据,前景是我们用引擎渲染的一些3D模型,我们现在需要截出这些3D模型,由于一些原因(主要是实时计算的性能),我们截出来的图片会带一圈透明边框。于是我们需要把起裁剪掉。可以在手机上实时裁,也可以在PC上脚本裁剪。

实现思路

解码出图片,得到 rgba 的像素数据。分四次遍历。左、上、右、下。去找第一个带有色彩的像素位置。我们知道全透明其16阿尔法通道的值就是0,或者说其实这个像素值就是。于是我们只是找到左上右下第一个非0的点的位置即可。知道四个方向的边界位置,只需要剪裁下即可得到目标数据。

代码实现

提供 Android 与 Python两种实现

Android:
 public void crop(Bitmap sourceBitmap,File saveFile) throws IOException {
        int sourceHeight = sourceBitmap.getHeight();
        int sourceWidth = sourceBitmap.getWidth();

        int[] pixels = new int[sourceHeight * sourceWidth];
        sourceBitmap.getPixels(pixels, 0, sourceWidth, 0, 0, sourceWidth, sourceHeight);

        int top = 0;
        int bot = sourceHeight;
        int left = 0;
        int right = sourceWidth;

        a:
        for (int i = 0; i < sourceHeight; i++) {

            for (int j = 0; j &
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值