Italian Salvataggio immagine in MySql

m277392

Member
Ciao a tutti.
Sto cercando da giorni di memorizzare in un campo MySql una immagine (una firma che ricavo e riporto in una ImageView).
La connessione avviene in modo diretto con l'aiuto della libreria MySql (Versione 1.02). A quanto ho capito devo convertire prima
l'immagine che ho nella ImageView e poi memorizzare il tutto in nuovo record della tabella nel campo Firma. Forse per molti è semplice ma sono in difficoltà
e necessiterei di aiuto.
Mille grazie a tutti per questo in anticipo

Massimiliano
 

Star-Dust

Expert
Licensed User
Longtime User
Io preferisco Base64. Perchè come array su alcune versioni di android non funziona , mentre Base64 funziona B4J,B4i e B4A e su tutte le versioni.

SALVA FIRMA:
Dim IB() As Byte = ImageToBytes(FirmaCliente)
Dim SU As StringUtils
log("Immagine Firma in Base64" & SU.EncodeBase64(IB))

Public Sub ImageToBytes(Image As B4XBitmap) As Byte()
    Dim out As OutputStream
    out.InitializeToBytesArray(0)
    Image.WriteToStream(out, 100, "JPEG")
    out.Close
    Return out.ToBytesArray
End Sub

LEGGI FIRMA:
'Campo Firma è la stringa che prelevi su MySQL in formato stringa'
FirmaCliente=BytesToImage(SU.DecodeBase64(CampoFirma))

Public Sub BytesToImage(bytes() As Byte) As B4XBitmap
    Dim In As InputStream
    In.InitializeFromBytesArray(bytes, 0, bytes.Length)
    #if B4A or B4i
        Dim bmp As Bitmap
        bmp.Initialize2(In)
    #else
       Dim bmp As Image
       bmp.Initialize2(In)
    #end if
    Return bmp
End Sub

P.S. Alcuni su B4J assegnano direttamente un array di byte alla variabile Image. Di per se funziona perchè Java su Desktop fa il Casting delle due variabili, ma in linea di principio dovrebbe dare errore (come di giusto) perchè sono tipi diversi. Infatti se lo fai con B4XBitmap ti segnala errore. Io sconsiglio di farlo, è bene scrivere sempre codice che funzioni su tutte le piattaforme (B4X) e che non approfitti di eccezioni se non è necesario.
 

DanieleUrsoleo

New Member
salve,
anche io uso le librerie mysql 1.02 per connettermi ad un db mysql ( Mariadb precisamente ) e fino a che lancio il debug e installo l'applicazione sul tablet con B4A bridge nessun problema. Ma se l'installazione la lancio con la release l'app non si connette al database e da errore.
immagino possa essere non inerente al thread ma è quello in cui si usano almeno le stesse librerie
grazie a chi vorrà dedicarmi del tempo per la risposta

questo è il codice dell'esempio con cui sto lavorando

Region Project Attributes
#ApplicationLabel: MySQL-Login
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#End Region

#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#AdditionalJar: mysql-connector-java-5.1.22-bin.jar
#End Region

Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
#AdditionalJar: mysql-connector-java-5.1.22-bin.jar
'Private xui As XUI
Dim mh As MysqlHandler
Dim rs As ResultSet
End Sub

Sub Globals
'These global variables will be redeclared each time the activity is created.
End Sub

Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Layout")
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub Button1_Click
mh.Initialize("com.mysql.jdbc.driver","jdbc:mysql:/192.168.1.236:3306/testmysql","daniele","R@ffa3l3")
If mh.isConnected Then
MsgboxAsync("CONNESSO","INFO")
Else
MsgboxAsync("MANCATA CONNESSIONE "&CRLF&mh.SQLError,"ATTENZIONE")
End If
End Sub
 

giannimaione

Well-Known Member
Licensed User
Longtime User
vott a' past! Tipica espressione napoletana
 
  • Haha
Reactions: udg

Star-Dust

Expert
Licensed User
Longtime User
Direi di aprire un thread specifico per la domanda che non ha proprio nulla anche fare con l'argomento principale

Aggiungerei che non si scrive sui post vecchi e chiusi perché nel frattempo le cose cambiano

Infine se alleghi del codice usa il tag adatto così da renderlo leggibile.

E non dimenticare di so caricare di che piattaforma parli.

4 errori in un solo post. Un record
 
  • Like
Reactions: udg

udg

Expert
Licensed User
Longtime User
4 errori in un solo post. Un record
Bbbooooni, Daniele si è appena iscritto. Diamogli il tempo di orientarsi..:)
 

Star-Dust

Expert
Licensed User
Longtime User
Lo sto inizializzando.
Come tutti gli object si inizializzano prima di usare i metodi
 

giannimaione

Well-Known Member
Licensed User
Longtime User
secondo me @Erel ha sbagliato nel rendere gratuiti i suoi prodotti.
 

Star-Dust

Expert
Licensed User
Longtime User
secondo me @Erel ha sbagliato nel rendere gratuiti i suoi prodotti.
Oramai la concorrenza ha messo a disposizione tutto gratuitamente. Visual Studio, Android Studio, Delphi, Kotlin, NodeJs, ionic, React, Unity, eTaninoCoder eccc...
Poi molti usavano al versione craccata e quindi cambiava poco. C'erano diversi siti che ti fornivano la versione completa e le librerie accessibili sono ai registrati.

Non a caso la versione B4i è a pagamento, perchè anche se hai una copia non legittima non puoi usare il Build Hosting, ma se invece non hai bisogno del Builder ospitato perchè hai un Mac difficilmente useresti una versione non pagata....
 
Last edited:

giannimaione

Well-Known Member
Licensed User
Longtime User
Che tradotto in comprensibile sarebbe?
a seconda dell'intonazione di voce, assume due significati diversi; ma questo, credo, anche in altre lingue;
ad esempio "quella persona è un cesso", assume appunto due significati a secondo del tono di voce; è un elogio, oppure una offesa;

nel caso di "vott a' pasta" (tradotto "cala/butta la pasta ... per cuocerla") ha due significati:
1) si è tutti insieme, in compagnia di amici e all'improvviso arriva quella persona che sta sulle scatole a tutti; in questo caso si mette in risalto la non gradita presenza;
2) stessa situazione precedente, ma in questo caso il significato è completamente opposto; la presenza è gradita tanto da aggiungere un posto a tavola (aggiungi la pasta, cucina in abbondanza) per il gradito ospite:
 

Star-Dust

Expert
Licensed User
Longtime User
Ah, non vi ho ancora parlato del notissimo linguaggio Script eTaninoCoder? male, male... male..
 

Star-Dust

Expert
Licensed User
Longtime User
Sarà perchè non esiste?
 
Top