String to bitmap?

Jamsa

Member
Licensed User
Longtime User
Hi

I've got a string with a bitmap in it, and I want to convert it to a bitmap, but how??

I can't find a "string to bitmap" function anywhere.
 

Jamsa

Member
Licensed User
Longtime User
I have a textfile with various information including some bitmaps.

I Then load the information into a list of objects, and one of the properties of these objects is a bitmap.

The object type:
B4X:
Type AppInfo (ID As String, Name As String, Version As Int, VersionDate As Long, _
   LastUpdated As Long, Bundled As Boolean, DownloadsCount As Long, _
   UsersRating As Int, OrgRating As Int, SystemRating As Int, _
   ExpertRating As Int, MoreInfoLink As String, TimesUsed As Int, _
   LastUsed As Long, LastNagged As Long, CurrentClassification As Int, _
   AppIcon As Bitmap)

The textfile-loadfunction:
B4X:
If File.Exists(File.DirRootExternal, FileName) = True Then
   strTest = File.ReadString(File.DirRootExternal, FileName)
   TempApps = Split(strTest,"[|]")
      
   For i = 0 To TempApps.Length - 1
      Dim Temp() As String
      Dim App As AppInfo
         
      Temp = Split(TempApps(i),"[,]")
         
      App.ID = Temp(0)
      App.Name = Temp(1)
...
...
      App.AppIcon = Temp(16)
         
   Next
End If
 
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
You cannot simply write a Bitmap to a text file. It gets converted to some meaningless string (its Java class name).

The easiest solution is to save each bitmap in its own file.
You can write it to a file with this code:
B4X:
Dim out As OutputStream
out = File.OpenOutput(File.DirInternal, "bmp.jpg", False)
App.AppIcon.WriteToStream(out, 100, "JPG")
out.Close
 
Upvote 0

Jamsa

Member
Licensed User
Longtime User
Hmm...yeah I though so. :-/

But it looks like a slow process - I have around 100-200 bitmaps.

Is there a smarter/faster way?
 
Upvote 0

Jamsa

Member
Licensed User
Longtime User
It's the normal sized app icons.

Thing is, all the other stuff I'm doing before, and after this makes the totalt process slow enough, so I would really like not having something to slow it down too much more. :)
 
Upvote 0

Jamsa

Member
Licensed User
Longtime User
...so i'm guessing there's no way to do it without a stream.

Ok I'll try it and see if it works fast enough.

Thanks. :):)
 
Upvote 0

acbarbosa

New Member
Licensed User
Longtime User
Hi.

First of all I'd like to introduce me. My name is Antonio Carlos from Brazil.

I've just started to work with Basic4Android and I'm in a hurry to say "I LOVE IT!!!"

Before using B4A I never created any app for android, due I'm not a Java programmer, but with B4A in just few hours I' could run my first app in my device.

Thanks to this dynamic forum!!

Now returning to this subject...

A simple way to write a string containing a image can be as follow:

B4X:
Sub Globals
    '// 
    '// The string image can be created using Sencha IO as shown:
    '// http://src.sencha.io/data/http://www.alphatour.com.br/wp-content/uploads/2013/08/AlphaTour_LOGO_230x95b.png
    '//
    
    Dim su As StringUtils
    Dim Logo = "data:image/png;base64,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"
    Dim imgLogo As ImageView
  
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("frmMain")
    Logo = Logo.SubString(Logo.IndexOf(",")+1)
    Dim buffer() As Byte
    Dim b As Bitmap
    buffer = su.DecodeBase64(Logo)
    Dim In As InputStream
    In.InitializeFromBytesArray(buffer, 0, buffer.Length)
    b.Initialize2(In)
    imgLogo.Bitmap = b
End Sub


Best Regards

AC
 

Attachments

  • String2Image.zip
    9.4 KB · Views: 398
Upvote 0
Top