Android Question Create a round image from imagedownloader service

hanyelmehy

Active Member
Licensed User
i use imagedownloader service to download image ,i need to return rounded image from service
next code must call from activity ,any other solution can work in service

B4X:
Sub CreateRoundRectBitmap (Input As B4XBitmap, Radius As Float) As B4XBitmap
    Dim BorderColor As Int = xui.Color_Black
    Dim BorderWidth As Int = 4dip
    Dim c As B4XCanvas
    Dim xview As B4XView = xui.CreatePanel("")
    xview.SetLayoutAnimated(0, 0, 0, Input.Width, Input.Height)
    c.Initialize(xview)
    Dim path As B4XPath
    path.InitializeRoundedRect(c.TargetRect, Radius)
    c.ClipPath(path)
    c.DrawRect(c.TargetRect, BorderColor, True, BorderWidth) 'border
    c.RemoveClip
    Dim r As B4XRect
    r.Initialize(BorderWidth, BorderWidth, c.TargetRect.Width - BorderWidth, c.TargetRect.Height - BorderWidth)
    path.InitializeRoundedRect(r, Radius - 0.7 * BorderWidth)
    c.ClipPath(path)
    c.DrawBitmap(Input, r)
    c.RemoveClip
    c.Invalidate
    Dim res As B4XBitmap = c.CreateBitmap
    c.Release
    Return res

End Sub
 

lucasheer

Active Member
Licensed User
Since the imagedownloader doesn't directly give you the bitmap, just call the CreateRoundRectBitmap method on the ImageView's bitmap afterwards:

B4X:
    Dim myImage As ImageView = roundedImageView
links.Put(myImage, "http://www.basic4ppc.com/basic4android/images/SS-2012-08-29_12.55.42.png")
myImage.Bitmap = CreateRoundBitmap(myImage.Bitmap, 40dip)
 
Top