Input: A Bitmap or B4XBitmap.
Output: A rectangle with the boundaries of the non-transparent area.
Usage:
Depends on: XUI and BitmapCreator libraries.
Output: A rectangle with the boundaries of the non-transparent area.
B4X:
Sub FindMinRect (bmp As B4XBitmap) As B4XRect
Dim bc As BitmapCreator
bc.Initialize(bmp.Width, bmp.Height)
bc.CopyPixelsFromBitmap(bmp)
Dim r As B4XRect
r.Initialize(bc.mWidth / 2, -1, bc.mWidth / 2, 0)
For y = 0 To bc.mHeight - 1
For x = 0 To bc.mWidth - 1
If bc.IsTransparent(x, y) = False Then
r.Left = Min(r.Left, x)
Exit
End If
Next
If x < bc.mWidth Then
If r.Top = -1 Then
r.Top = y
Else
r.Bottom = y + 1
End If
For x = bc.mWidth - 1 To 0 Step -1
If bc.IsTransparent(x, y) = False Then
r.Right = Max(r.Right, x + 1)
Exit
End If
Next
End If
Next
Return r
End Sub
Usage:
B4X:
Dim r As B4XRect = FindMinRect(bmp)
ImageView2.SetBitmap(bmp.Crop(r.Left, r.Top, r.Width, r.Height))
Depends on: XUI and BitmapCreator libraries.
Last edited: