iOS Question Base64 to Bitmap

Cornelius Smit

Member
Licensed User
Good day I am a bit frustrated as my code work in Android but not in IOS

I get the following error

Error occurred on line: 65 (Main)
Error loading image.
Stack Trace: (
CoreFoundation <redacted> + 252
libobjc.A.dylib objc_exception_throw + 56
CoreFoundation <redacted> + 0
Emerald Qld -[B4IBitmap innerInit::] + 352
Emerald Qld -[B4IBitmap Initialize2:] + 76
Emerald Qld -[ResumableSub_main_Application_Start resume::] + 5400
CoreFoundation <redacted> + 144
CoreFoundation <redacted> + 292
Emerald Qld +[B4I runDynamicMethod:method:throwErrorIfMissing:args:] + 1624
Emerald Qld -[B4IShell runMethod:] + 448
Emerald Qld -[B4IShell raiseEventImpl:method:args::] + 2164
Emerald Qld -[B4IShellBI raiseEvent:event:params:] + 1372
Emerald Qld -[B4IDelegatableResumableSub resume::] + 380
Emerald Qld -[B4I checkAndRunWaitForEvent:event:params:] + 552
Emerald Qld -[B4IShellBI raiseEvent:event:params:] + 1228
Emerald Qld __37-[B4ICommon ReturnFromResumableSub::]_block_invoke + 368
libdispatch.dylib <redacted> + 24
libdispatch.dylib <redacted> + 16
libdispatch.dylib <redacted> + 1068
CoreFoundation <redacted> + 12
CoreFoundation <redacted> + 1964
CoreFoundation CFRunLoopRunSpecific + 436
GraphicsServices GSEventRunModal + 100
UIKitCore UIApplicationMain + 212
Emerald Qld main + 124
libdyld.dylib <redacted> + 4
)
Class (b4i_httpjob) instance released.




image = "/9j/4AAQSkZJRgABAQEAYABgAAD//gA8Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg\nSlBFRyB2OTApLCBxdWFsaXR5ID0gMTAwCv/bAEMAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/bAEMBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIBMgG\nYAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQD\nBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp\nKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJma\noqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/\nxAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQID\nEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RF\nRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqy\ns7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/\nAP7+KKKKACiiigAqjfXttp1pcX15IkNraRSXE8zbisUMY3vIQoZiAATwD07irxIHJqGSOG6ikhlR\nJoZUeGWJwrpJHIu2SOVCCrK6kqyMCrKSCDmues7KUacoKq4TcVO8oqbjL2cpQTTlD2nJzJbxTjdc\nyaD5X+JH7QCWumXkHgiwvdQvI1YPfvaSGCIE4kMUKgyOyd3dAqnDYIRgPgLxn448YaiRd69f3r20\nmSElml+T52wDHkIpJA24AyCoCk5Nfo34++CK31nLceCNROgXSQXLyaeY3mtbxhE7RQ2zIwe1dnBj\n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\niSJJa3KNDcW0U (message truncated)...

B4X:
    wait for (Data.GetEmergincyList)Complete(bList As List)
If bList.IsInitialized=True Then
    For I = 0 To bList.Size-1
      
  
    Dim M As Map
    M.Initialize
    M=bList.get(I)
            Log(M)
    Dim SU As StringUtils
    Dim bm1 As Bitmap
            bm1.Initialize(File.DirAssets,"emeraldLogo.png")
    
  
  
            Dim Base64String As String = m.Get("image")
            Dim FileBytes() As Byte
            Dim bm As Bitmap
            If Base64String.Length > 4 Then
                FileBytes=SU.DecodeBase64(Base64String.Trim)
                Dim Inputstream1 As InputStream
                Inputstream1.InitializeFromBytesArray(FileBytes,0,FileBytes.Length)
                bm.Initialize2(Inputstream1)  '<-----ERROR ON THIS LINE
              
              
              
              
                Inputstream1.Close
                Sleep(100)
            Else
 
Last edited:

Cornelius Smit

Member
Licensed User
it is a blob (image) in a MySQL database that I convert to base64 in the select statement not sure how to get the file from the mobile device. The thing is I use the same blob and same SQL statement from the same web service and it is working
 
Last edited:
Upvote 0

Cornelius Smit

Member
Licensed User
Another thing I noticed (think this must be a new thread )just want to mention it is that if I use xcustomview the app display a blank screen and it is then impossible to recover by removing the library (working 100% in B4A) as I need to create a new project then
 
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
think this must be a new thread
True.

it is a blob (image) in a MySQL database that I convert to base64 in the select statement not sure how to get the file from the mobile device. The thing is I use the same blob and same SQL statement from the same web service and it is working
You can save it in File.DirDocuments and enable file sharing: https://www.b4x.com/android/forum/threads/files-and-folders.46137/#content
 
Upvote 0

Cornelius Smit

Member
Licensed User
I have added this line
B4X:
    Dim M As Map
    M.Initialize
    M=bList.get(I)
            Log(M)
    
 File.WriteMap(File.DirDocuments,"imagemap",M) '<------------------------------------------------------------error moved here
and now the error has moved to this line
if I break the code and hover on the map os list for that matter the program stop and give me an error
 
Last edited:
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
We cannot help you with the information you provide.

What is MyMap? Which error? If MyMap is not a string then your code is wrong and you should use B4XSerializator instead.

B4X:
Dim M As Map
    M.Initialize
    M=bList.get(I)
This is a mistake. Never initialize an object and then assign a new object to the same variable.

All these points are covered in the video tutorials.
 
Upvote 0

Cornelius Smit

Member
Licensed User
Sorry my mistake I renamed it, it should b only M And the error is still on this line the more If I stop the code and hover my cursor the app stop with an error even if I add try/catch it does not even go to the error handling routine it stop dead in its tracks I start to think it could be a compile or IDE problem.
 
Upvote 0

Cornelius Smit

Member
Licensed User
OK Found the Issue one of my fields had a null value (empty) when I created the list from my query to the database.however in B4A it inserts a "null" string if the field is empty but in b4I it crashes. That is the reason it was working in Android and not in IOS

using this to create my list

Dim job As HttpJob
Dim ListResults As List
job.Initialize("job",Me)
job.PostString(Global.DataServer, Query)
Wait For (job) JobDone(job As HttpJob)
If job.Success Then
Dim parser As JSONParser
Log(job.GetString)
parser.Initialize(job.GetString)
ListResults = parser.NextArray 'returns a list with maps
If ListResults.Size=0 Then
If job.IsInitialized Then
job.Release
End If
hud.ProgressDialogHide
Return ListResults
Else
 
Last edited:
Upvote 0
Top