Bug? B4a error when i touch to button

Status
Not open for further replies.

jolclov

Member
When I tried to press the camera button to remove the background of the image, I received this error.

B4X:
logging B4XPages events.
** Activity (main) Resume **
Error occurred on line: 33 (FileProvider)
java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4j.object.JavaObject.RunMethod(JavaObject.java:132)
    at b4a.example.fileprovider._getfileuri(fileprovider.java:84)

B4X:
Private Sub btnCaptureImage_Click
    Wait For (chooser.CaptureImage) Complete (Result As MediaChooserResult)
    HandeChooserResult(Result)
End Sub

Private Sub HandeChooserResult (ChooserResult As MediaChooserResult)
    For Each v As B4XView In Root.GetAllViewsRecursive
        If v.Tag Is B4XImageView Then v.Tag.As(B4XImageView).Clear
    Next
    If ChooserResult.Success = False Then Return
    Dim bmp As B4XBitmap = xui.LoadBitmap(ChooserResult.MediaDir, ChooserResult.MediaFile)
   
    'not mandatory but for better performance we will limit the image size.
    If bmp.Width > 2000 Or bmp.Height > 2000 Then bmp = bmp.Resize(2000, 2000, True)
    #if B4A
    If ChooserResult.Mime = "image/jpeg" Then
        bmp = RotateJpegs(ChooserResult, bmp)
    End If
    #end if
   
    ivOriginal.Bitmap = bmp
    ivOrigSmall.Bitmap = bmp
    ivMask.mBase.Alpha = 0.5
    Wait For (SelfieSegmenter.Process(bmp)) Complete (res As SelfieSegmentationResult)
    If res.Success Then
        ivMask.Bitmap = res.ForegroundBitmap
        ivMaskSmall.Bitmap = res.ForegroundBitmap
    End If
End Sub

#if B4A
'code from SimpleMediaManager
Private Sub RotateJpegs(ChooserResult As MediaChooserResult, bmp As B4XBitmap) As B4XBitmap
    Dim in As InputStream = File.OpenInput(ChooserResult.MediaDir, ChooserResult.MediaFile)
    Dim ExifInterface As JavaObject
    ExifInterface.InitializeNewInstance("android.media.ExifInterface", Array(in))
    Dim orientation As Int = ExifInterface.RunMethod("getAttribute", Array("Orientation"))
    bmp = RotateBitmapBasedOnOrientation(bmp, orientation)
    in.Close
    Return bmp
End Sub

Private Sub RotateBitmapBasedOnOrientation (bmp As B4XBitmap, orientation As Int) As B4XBitmap 'ignore
    Select orientation
        Case 3  '180
            bmp = bmp.Rotate(180)
        Case 6 '90
            bmp = bmp.Rotate(90)
        Case 8 '270
            bmp = bmp.Rotate(270)
    End Select
    Return bmp
End Sub
#End If
 

Attachments

  • 1728913136592_SubjectSegmentation.zip
    16.1 KB · Views: 25
Status
Not open for further replies.
Top