In livecode potete sfruttare due informazioni riguardo le immagini: la proprietà imagedata e la proprietà text. Queste due proprietà rappresentano l'immagine, ma in due modi diversi. La proprietà imagedata contiene le informazioni sui pixels dell'immagine e basta; la proprietà text contiene più informazioni: il tipo di immagine (bmp,jpg, ecc.), il tipo di compressione dei dati, i pixels, ecc.
Se dobbiamo lavorare con più immagini di diverso formato (jpg, gif, png, ecc.), non possiamo mettere direttamente solo l'imagedata in una immagine di livecode, perchè se i formati sono differenti livecode dà errore e l'immagine non compare.
Dobbiamo lavorare con la proprietà text, ma vediamo nel dettaglio come fare.
Per scegliere un'immagine da caricare conviene utilizzare questo codice:
answer file "Scegli il nuovo file per l'immagine da salvare:"
if the result is not "Cancel" then
put it into tpath
lock screen
put the rect of image "logo" into temp
put url ("binfile:" & tpath) into image 1
set the rect of image 1 to temp
unlock screen
end if
Notate due cose, l'immagine può non avere la dimensione (altezza e larghezza) desiderata, memorizzando prima la proprietà rect e poi impostandola dopo aver caricato l'immagine, non rischiamo di trovarci immagini con dimensioni assurde fluttuanti in giro per il programma.
Il secondo elemento da notare è il codice per mettere tutti i dati dell'immagine del computer dentro al controllo immagine di livecode (che ho chiamato semplicemente image 1):
put url ("binfile:" & tpath) into image 1
solo così la nostra immagine image 1 contiene la proprietà text.
Il database dovrà avere un campo di tipo TEXT (testo), ciò ci permette di non dover impazzirci con i dati in formato binario, che di solito sono un problema quando si trasferiscono da un sistema ad un altro.
Ora i dati dell'immagine, cioè la proprietà text, deve essere salvata nel database preservando tutte le informazioni, il sistema migliore è utilizzare la funzione base64encode(); in questo moto tutti i bit sono trasformati in caratteri accettati dai campi text dei database. Ecco un esempio di codice per inserire un'immagine in un database:
put base64encode(the text of image 1) into temp
put "UPDATE bandiere SET immagine='"& temp &"' WHERE nome='italia' ;" into tSQL
revExecuteSQL connID,tSQL
Per recuperare l'immagine, basta fare il procedimento inverso. La proprietà si ottiene utilizzando la funzione base64decode(), e poi la inseriamo nel controllo immagine, nel nostro caso image 1, di livecode.
put "SELECT immagine FROM bandiere WHERE nome='italia' " into tSQL
put revDataFromQuery(tab,return,connID,tSQL) into tRecord
lock screen
put the rect of image 1 into tempR
put base64decode(tRecord) into temp
put temp into image 1
set the rect of image 1 to tempR
unlock screen
Separare i dati utilizzando il carattere TAB è molto utile, perchè se dovete richiedere più dati insieme non avrete possibilità di confondere i dati, poichè il carattere TAB non esce dalla funzione base64encode().
Nessun commento:
Posta un commento