Italian Base64 mmm come se usa

ivanomonti

Expert
Licensed User
Longtime User
Scusate il titolo ma non saprei come intitolare questo post,

Vediamo ho un immagine su stringa base64

B4X:
imagebase64(0) = "iVBORw0KGgoAAAANSUhEUgAAAAcAAADXCAIAAABZDtyrAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA2klEQVR4nO3IR0oDUABF0bsOx3YJKmKP3WBP7L13xYb7H7iB+5A//2d4+DX8GL5N2C8T9tPwYYr23YR9M7yasC+GZxP2yfBoeDBh7w13hlsT9sZwbbgyYS8NF4ZzE/bMcGo4MWGPDUeGQ8OBYd+E3TPsGjqGtgm7Y9g2bJmwm4YNw7oJu2ZomaJdNawYlg1LhkXDggk7b8LOGZqGWcOMYdqEnTJhJw0TJuy4YcwU7agp2hHDsAnbMEU7ZMIOmqIdMPQb+kzYXkOPCdtt6DJ169atW7du3bp1/9s/SjJxXJG3HwUAAAAASUVORK5CYII="

ho del codice che la richiama ( ma secondo me non sto facendo bene le cose)

B4X:
Sub getimage As Bitmap

   Dim bt As Bitmap
   Dim s As String
   s = dc.DecodeStoB(imagebase64(0))
   bt.Initialize2(s))
   Return bt
   
End Sub

Errore generato

B4X:
Compiling code.                         0.12
Compiling layouts code.                 0.01
Generating R file.                      0.00
Compiling generated Java code.          Error
B4A line: 23
s = dc.DecodeStoB(imagebase64(0))
javac 1.6.0_27
src\it\ivanomonti_ap011\eu\kiphone2012.java:52: cannot find symbol
symbol  : method NumberToString(byte[])
location: class anywheresoftware.b4a.BA
_s = BA.NumberToString(_dc.DecodeStoB(_imagebase64[(int)(0)]));
       ^
1 error

s = dc.DecodeStoB(imagebase64(0))

cosè che non gli va giù o che cosa voglio mandargli giù :sign0148:
 

moster67

Expert
Licensed User
Longtime User
imagebase64?? Cos'è? Un tuo routine/funzione Base64?

Non ho mai usato Encode/DecodeBase64 presente nella libreria stringutils :

Basic4android - StringUtils

Prova con quello. Magari funziona meglio?
 

ivanomonti

Expert
Licensed User
Longtime User
Risolto in questo modo

B4X:
Sub Class_Globals
   Dim imagebase64(4) As String
End Sub

un array di string contenente png ( binario png + encode64 )

B4X:
Public Sub Initialize

 
 imagebase64(0) = "iVBORw0KGgoAAAANSUhEUgAAAAcAAADXCAIAAABZDtyrAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA2klEQVR4nO3IR0oDUABF0bsOx3YJKmKP3WBP7L13xYb7H7iB+5A//2d4+DX8GL5N2C8T9tPwYYr23YR9M7yasC+GZxP2yfBoeDBh7w13hlsT9sZwbbgyYS8NF4ZzE/bMcGo4MWGPDUeGQ8OBYd+E3TPsGjqGtgm7Y9g2bJmwm4YNw7oJu2ZomaJdNawYlg1LhkXDggk7b8LOGZqGWcOMYdqEnTJhJw0TJuy4YcwU7agp2hHDsAnbMEU7ZMIOmqIdMPQb+kzYXkOPCdtt6DJ169atW7du3bp1/9s/SjJxXJG3HwUAAAAASUVORK5CYII="
 
 imagebase64(1) = "iVBORw0KGgoAAAANSUhEUgAAAAcAAADXCAYAAADWbEv8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAACxMAAAsTAQCanBgAAAT4SURBVFhH3VhNbyNFEK35toPggLiQA/sf8xtZ0AoJib0CCgqnRBt2c0hie754r6ar3dVjIzgggR09dTTV9fWqeqZmipubm1nO/MppmuQcynme5RzKcyZ5/d/S/EcBlWUpTdNI13Xioq2qSv74+CRvv/tBvn37TiIJ1Pj5l9/k+3c/yiM2FEW5aFLw4cOj/Hp7J3VdK9QsA6K5n96/l7rpIrrNdhHy9+npSQMxbCygoihkGAYI2oioadpNC2HbAa1sN5sjtzS9aNJ0Kx2FaVVUSE2sm1yzhpamgrXFJleyxeeC7Tbz2eKiYbu9yriFySqApqNZBkY/hlUqJWg01E2d53mkb1XPBrsNHYJzPhtUxbDpslTKGgUOqGr4TxusqeHTQLMpt1VZCVGiRdgA3mcLTaDtUBXACemnQsS6pj610WgKzca1qUBC6tM6j2uTazIIg1qx/tEWDb4qmI7RmmmmoIBWQU3nk4FAu+aaV4VpUEvTKAtPn6XBDTXNG7fs+hqBGKoqEXJTifxKcou1IBm8yJsUNUvubtgqWCl0VdGLBXJkXbOqVCyVlYyWUoa4W9NgN5hP21BxN0ALLk/61ptEMK0BLhcLjUsJ13qeMFvAnwIbVDN2H3JVP4YCpJhQzVqbqOnQJuazsORpOjWrmoxUb2vFWqiJhxbxAaEABYJhUgZHvIqwQSFZtIge4TM/COmbtTRuGS2xaGJJ62n/W2pRSG3TVG1qmkktAHwS+r8Jo0+wspQq+Ey5TcsXU+FFbU2wo75sdZpkyFKxjo8pZM9gl6cSEyKO0RpLsVTmM2WIaRg7kYSUiOPmpCqqZf5CYO44HGu56OMQLzcmI0LzVvZCx58qm2qeE/w3hXknOPr+X6n8ZbTpzXjVCReWp/XsqqkvKM+/VWy3ifdbm28v6PDGVMLzhEXXW+olF9tyvbA802lcHzXJM/Si65n0an13d4d3sK2M4yC3t7/jac9RROTrL/CK6UcB0oO5CDRVnBydsOJswlkhTI+pEHOiEBxjOej72WTAsDbB9IihNJ1vdYgIJnXNp3HEovPBMiNg/FgdQeYRpio3NttG1TWfdnFCftM8yYiVBpzZCdFOiJarDmypz2kchZj50SMVaqPhj2aJtWaPiwM2YKWFGC13jjPMMiCsTpOh67tLMLmOFpxOBgvIxjlGaFhpjtAycFD0JVN/hoyEGZqGCT3liHdmObI7+shQACk8ya3ym6eSHuQVQ/R5JCGvp/IaYMQfX9yWo7Ag5Gn0zeyAAHZExpD/suVTmVDPiDxPMDIFrNuEnWfgedEDEN4FSZkSEVYfELS0Kqqd+wxtqe25Jv5I37jKU9t6+RvXxwEXx4AhNLVFPKYfBvGNyjOkHc9CnwooEEALQ2qWpieY0mOItbfusyZj8mdJYG6GAXXN6CN1C2jaCXnnNPS5UH2yf0LUTnOA5jD0wnXf7zMSEobGVZ5JJ7DBfUA9Ago4HHov5AdBQ384nD9lQ7/S7KVntMBuv8tJYFPjIJ2qSswTmoc+89njwgBw3e1eTwSEszIDjNrnyVSQJ3HY52YPe+kJNfuyaDJC/hjQiDYZ2SbG0MvLi7T4pkhzPZInYp739/fyzZs3COIAzV4RGXp+fta7RDHt9CKx2yUMPTw84Jk5yOef4Yts/yqvr88+FW749PFRvvrySq62eNhdX1+f/6p+ybNmktufhWu3t6VOToIAAAAASUVORK5CYII="
 
 imagebase64(2) = "iVBORw0KGgoAAAANSUhEUgAAAAcAAADXCAYAAADWbEv8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAACxMAAAsTAQCanBgAAAI4SURBVFhH7ZjNbtswEISXI0U/fQS/SNOipzySnzgoEARBmyBpkFaWRKnj9MoZAw56SWTgu5jY5XBIUatN+/1+DfHDsiyhwLquoYBKefz/f0VaQW3bhiJ9vvymTUgJoYBLi7brQ4GOghQ+su+6UDCy45xl0HFAgaZpQ4G+55wC9FynAnXThIKRZin1xUUoaHzD/SyDlnMqaDxNEKCqq1DQoYYOlQGqKiRWbVXXnLMMMyIUaBml8IIqqlWAv5DUDXdFwKDESEHNB0nh15koSOHVWvsolbdRGdQcUPh1ppR4YZTxan1kolhBen55cTeYEWTntIP2jqfQUNDxo9gyHNSx/r1iBX2cQeuttmHz9lib+GPCG4wXUZHNvtP2GXM3+zb7/h2P7SS8MxNOlAL6UkgPj0+yqkk/7h/cl+vKL9cy6eb2Tqe9/n6j0678IFa84dzOtEjh09as4xWoWMIqbMGd7n7en1lOqgr19X+wKlakx6dfZ865sBOh8M0G2zJYl8zNLsPWiD5gnJPVrQBvUevS2l7N2UvhMultGdjHwXvrmke27ZSpRuE3+8SWmW6WFeSbZFS7Ck6pNb03O+fEk6DwRzNPcyiw5BwK3ykc5xwK5Mw5Bf4ps2oz1SowzXMokGmfAuM0hgKZ61RwnUwrwDhOocB0OIQC48xIAUZGKjBTrcKvcxj+hIJpZ6YtQ0G0T4Bh+M20ZTDRIQWGwxAKzNMUCs7JSEH68vVKv5E+9SkUabfb6cgP0on4C/3ISgCBNBsWAAAAAElFTkSuQmCC"
 
 imagebase64(3) = "iVBORw0KGgoAAAANSUhEUgAAAAcAAADXCAYAAADWbEv8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAACxMAAAsTAQCanBgAAAT7SURBVFhH7VhNb9xGDB2NtKtdG70UPfnQ/Ef/gv67opcCyTUpWqQIDBs2EgP1evWd9zjDWXG06iXtZREFD4OIS/LxkSOPVNze3k5u5fLjOLo1+Gma3Br8Wkje/788/5VQXddus9k475fcynGqfvn49yd3dX3lrgFG0gsO3j19fna//va7e//hL4mgovi63rqqqgR//PnRPT4+pRR+V+9dtakT3r5758qylPC+3u2EkOLL87OkFONut4dhm9D3vSuKQn4AIzy3MG5RElb1ip4MS0+Gzo11NNIzGlOdJFTBS8rBugwrOQPmWvv9fue2uKkwniRSIqRiPhlS5xZkFMaz2qJdkEthCUkpJ/mMsYbnZlMlmJy1eFKAAJuzQr7KJxgj69tUCB1hRChL70pfCnxhhwxjwlbBE9hiZEzYoAw8wZirNaoAmDoKkWkbJk9h6qxICB4KW2cZczIvQuvEywxxwlmCIOZMo1mBZYWbG3hyNTm9L6QMei1K8cgpoWNJRj6yrWBUcNr1B3BiV+gdVuMZQgIbjoqXfcL9KaVU6CU7I8SwGrbcUCVqnLdslpNTEMrgRGQKIRzcPcAIRlsSKKJ8DG2MZEvBCbLllXY2jQXyCeKDKhEiW5ahmGKNUqdMHnVl2KUnCFEEKSUQSjmZR0QgYxceMbOczBdCMrwx4ndgidAMN/MSQpKDt/EDwewKRjxi/YTwgM1JP/aR6kRPhmRP2d0USEvQGyFs9ORqHuPCFjmJ+XViK20DoYUI8cY8X1KIoVRwrmZMJA8Vyko55TzztzcZKcw5xiICWQrbmDNNvNQZS7GVBir5vVOztSua02xBLWXeEW1bvq3yMQkipAiRQaozN9h+xpaR1FLbRTExy8r9kOnCjPk2MKO5VuulifBtdZ6T8LtC+V45+7z9NuHPeV+y8N+fYFnHTbN1wNLb1YU9qf/7vVJ9un+U904ei/jSOo6Da9vW3d3d8VDIMwKPGDwS2KMGDuE8YvFswh9Zajgk4jiJswKxeJnhoXfqccAeEXIYjau8O2jIsAbIX156ggsuPTOenJEmsmAdsxdw8eR5Wi8lm8LK6RD1jdPohrxOHpNHsB3Bluv8ki8R4zAI+ENjHPmBA/8YljDHSQnX4WYfVhsWoYYJYUkIKz0NW8kbQ84fq15yQVNFxhZvNuIZIEKqttw0AzwVy1IkX4A1Dr2b4KlY5MzDppwDPOGXkHliHKO2XBfCz9/islImKUNFMApJTtE1wITlcOn46Ahp2/A1C93k3EbYnLEbSsoqJN/B0M+ITFvUiTuKzJMvLicsRdC3uDh9J22RiztMusKdNrukFB1LrtbYc6BXZygMtf4znr14UvwAY+zQw2H2QdB0RXaZTDynPSMkYaMIjGDCDvi0NRIcFawL4VdFaBF2QFhFNtRhRytsKcjDOVIstJWcnKVc+LZrXQ/Pvu9ktaV0nflcao2zKaAYxtg0jRs6EIqwbFvkAmOFNTLn2i5r8JeATDuyBRbCD/TkgyPvStM2pzpzz+b46joKAXC1M6RkZH6zbd+8Hh0b3qNOwngeG4RFXkEetqMI0jI0PY4JmfPyx+Yo4TqIQWzxYfBwOAQjWQ5DJ+j71v385o27v7+PnkfUCQ+iGI/y9Hh5eQnGw+EfGF7dD9f4S+h79/DwkAj7q33hfvrxyn35/GQM/EVxc3Oz/lXdVJ3954IOv18B+y+x/nQF3FQAAAAASUVORK5CYII="
 
End Sub

La presente procedura legge la stringa, converte in binario e restituisce la picture.

B4X:
Sub image( x As Int) As Bitmap
   Dim b() As Byte    
   Dim bmp As Bitmap
   Dim s As StringUtils
   Dim i As InputStream
   b = s.DecodeBase64(imagebase64(x))
   i.InitializeFromBytesArray(b,0,b.Length)
   bmp.Initialize2(i)
   i.Close
   Return bmp
End Sub

Molti si chiedono perchè, semplicemenete per non perdere le immagini di un progetto, le includo come codice e bona li. Ottimo per le png o jpg non importa il tipo memorizzate nel vostro database.

Esattamente il metodo che si usa nel web.
 

ivanomonti

Expert
Licensed User
Longtime User
Scusa,
io sono stato sempre contrario a cablare dati nel codice.
Ma non ho capito, tu se hai 20 immagini nel progetto cosa fai ?
Salvi nel database i codici in base 64 ?

Non proprio, io mi diverto a creare controlli, molte volte tale controlli richiedono immagini precise, per evitare di inviare progetti incompleti di tali immagini, o di avere immagini che non sono le stesse al momento del progetto iniziale, trasformo le stesse in una stringa binario in questo modo

encode65(binario)

In questo modo includo nel progetto le immagini sottoforma di stringa e non file.
 

moster67

Expert
Licensed User
Longtime User
Decode/EncodeBase64 è utile a conoscere in ogni caso.

Anni fa per Windows Mobile ho scitto un piccolo app per scaricare/inviare la posta tramite POP3 e SMTP e tutti allegati sono (normalmente) in formato Base64. Forse viene usato anche con altre cose?

In ogni caso, B4A supporta Base64 tramite la libreria StringUtils menzionato da me in un post precedente.
 

ivanomonti

Expert
Licensed User
Longtime User
Decode/EncodeBase64 è utile a conoscere in ogni caso.

Anni fa per Windows Mobile ho scitto un piccolo app per scaricare/inviare la posta tramite POP3 e SMTP e tutti allegati sono (normalmente) in formato Base64. Forse viene usato anche con altre cose?

In ogni caso, B4A supporta Base64 tramite la libreria StringUtils menzionato da me in un post precedente.

Grazie o risolto, ho messo il codice a disposizione...
 
Top