Autore Topic: Riconvertire un'immagine dalla codifica in base64  (Letto 281 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Riconvertire un'immagine dalla codifica in base64
« Risposta #1 il: 28 Novembre 2022, 18:05:58 »
Forse devi tenere in conto anche la conversione a UTF-8  :-\
http://gambaswiki.org/wiki/lang/conv
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Riconvertire un'immagine dalla codifica in base64
« Risposta #2 il: 28 Novembre 2022, 20:47:14 »
Forse devi tenere in conto anche la conversione a UTF-8  :-\
Perché ?  🤔

Comunque quell'avviso "Null object " non mi pare possa provenire dalla stringa in Base64.
Inoltre, io gli avevo chiesto di fare un test "pulito", essenziale, al di fuori del suo programma.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Riconvertire un'immagine dalla codifica in base64
« Risposta #3 il: 28 Novembre 2022, 22:17:13 »
Forse devi tenere in conto anche la conversione a UTF-8  :-\
Perché ?  🤔

Comunque quell'avviso "Null object " non mi pare possa provenire dalla stringa in Base64.
Inoltre, io gli avevo chiesto di fare un test "pulito", essenziale, al di fuori del suo programma.

Perché Windows usa un altra codifica di caratteri e questo, forse, potrebbe interferire
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Riconvertire un'immagine dalla codifica in base64
« Risposta #4 il: 28 Novembre 2022, 23:00:05 »
Voglio aggiungere due cose:

1) il problema dell'errore relativo all'Oggetto Nullo è causato dalla riga di comando da me suggerita. Va spaccata come segue:
Codice: [Seleziona]
PictureBox1.Image = Image.FromString(FromBase64("stringa_in_base64"))

2) lui nel suo ultimo messaggio ha aggiunto una presunta stringa di dati in base64 dell'immagine... ma osservando meglio, lui ha passato caratteri numerici ASCII, che rappresenterebbero dati-byte in esadecimale, ma non ha passato effettivi valori stringa.  Ora io, per fare il test, dovrei convertire ogni coppia di quei caratteri numerici in un effettivo valore di tipo stringa.
Uffff....
« Ultima modifica: 29 Novembre 2022, 02:14:15 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Riconvertire un'immagine dalla codifica in base64
« Risposta #5 il: 29 Novembre 2022, 00:51:13 »
Ho risolto.  :D
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Riconvertire un'immagine dalla codifica in base64
« Risposta #6 il: 29 Novembre 2022, 14:36:49 »
Ho risolto.  :D

 :ok:

Non riesco a capire quello che è successo qui, ho usato inizialmente questo codice:

Codice: [Seleziona]
Public Sub Form_Open()

  Dim sPath As String = "~/Documenti/Gianluigi/test.txt"
  Dim s As String = File.Load(sPath)

  PictureBox1.Image = Image.FromString(FromBase64(s))

End

dove il test.txt conteneva la stringa che lui ha postato e subito anche a me restituiva l'errore, ma ora funziona  :mad:

Probabilmente avevo scritto il codice in modo errato e non sono più riuscito a replicare :-\

L'importante è che funziona e tu da subito avevi dato la corretta soluzione  :)
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Riconvertire un'immagine dalla codifica in base64
« Risposta #7 il: 29 Novembre 2022, 16:18:46 »
dove il test.txt conteneva la stringa che lui ha postato
Lui ha postato prima questa stringa (che qui riporto accennata):
Codice: [Seleziona]
0x2f396a2f344......etc.....
poi ha postato quest'altra:
Codice: [Seleziona]
"/9j/4AAQSkZJRgABAQEAYABgAAD......etc...."
che paradossalmente pensava fosse errata, ed invece è quella "buona".

Come gli ho spiegato, la prima delle due stringhe, da lui postate, contiene semplicemente i singoli caratteri numerici dei valori esadecimali - espressi in base64 - dell'immagine da riprodurre.
In sostanza, il primo data-byte in base64 dell'immagine sarebbe in realtà il valore &h2f. Se ottenessimo il corrispondente valore stringa ASCII vedremmo stampato ad esempio in console il carattere "/". Invece la prima stringa, da lui postata, riporta il carattere stringa ASCII "2"... e non va bene, ovviamente.
In sostanza quella prima stringa riporta e ci mostra ciascuno dei due caratteri numerici costitutivi di ogni valore esadecimale dell'immagine.
Cerco di essere ancora più chiaro:
se il primo valore-byte dell'immagine da ricreare è &h2f (che corrisponde al valore stringa ASCII dello slash "/"), la prima stringa - da lui postata - riporta i caratteri ASCII del numero "2" (...che ha valore &h32 del protocollo ASCII) e della lettera "f" (che ha valore &h66 del protocollo ASCII).
Pertanto, lui passando la prima stringa, NON passa - quale primo valore-byte - il valore &h2f (come sarebbe corretto), bensì &h32 !!!
Come sappiamo, infatti una cosa è il valore numerico, espresso in rappresentazione esadecimale, dell'intero &h2f, altra cosa sono i caratteri stampabili del numero "2" e della lettera "f" (ciascuno dei quali - fra l'altro - corrisponde a un valore numerico nella tabella del protocollo ASCII).
Se dunque il primo dato-byte del file immagine è il valore numerico &h2f, questo è appunto 1 byte. Invece, passando i caratteri stampabili "2" e "f", si passano 2 byte: &h32 e &h66, che nulla hanno a che vedere con il predetto valore numerico &h2f, se non quello di essere la sua mera raffigurazione "grafica": 2f.
...non so se mi spiego !
Avendo intuito ciò, cosa ho fatto io nel mio primo codice ? Ho preso i caratteri del numero "2" e della "f", li ho uniti (essendo comunque valori stringa) e li ho gestiti con la funzione Val() per ottenerne il corrispondente reale ed effettivo valore &h2f, sebbene espresso in decimale (ma ciò poco importa). Poi con la funzione Chr() ho cominciato a costruire in memoria la "vera" sequela di valori di tipo String da passare in fine alla funzione FromBase64().

Ad ogni modo, questa conversione è divenuta ovviamente inutile nel momento in cui lui ha postato la reale stringa di caratteri ASCII corrispondenti esattamente ai valori-byte dell'immagine (...e che io avevo dovuto ricreare pazientemente uno ad uno da ogni coppia di caratteri numerici presi dalla prima stringa postata).
« Ultima modifica: 29 Novembre 2022, 17:04:15 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Riconvertire un'immagine dalla codifica in base64
« Risposta #8 il: 30 Novembre 2022, 00:19:45 »
dove il test.txt conteneva la stringa che lui ha postato
Lui ha postato prima questa stringa (che qui riporto accennata):
Codice: [Seleziona]
0x2f396a2f344......etc.....
poi ha postato quest'altra:
Codice: [Seleziona]
"/9j/4AAQSkZJRgABAQEAYABgAAD......etc...."
che paradossalmente pensava fosse errata, ed invece è quella "buona".

Come gli ho spiegato, la prima delle due stringhe, da lui postate, contiene semplicemente i singoli caratteri numerici dei valori esadecimali - espressi in base64 - dell'immagine da riprodurre....

Scusa vuott, tu ti sei spiegato chiaramente, sono io quello che non si è spiegato bene:
Lui aveva postato nel primo post (che poi ha cambiato) una stringa che iniziava con "0x2f..." in realtà se tu avessi copiato quella stringa per poi incollarla in un editor di testo (gedit) come ho fatto io ti saresti subito accorto che si tramutava in "/9..."
Subito sono rimasto spiazzato tanto che ho provato più volte e volevo chiederti come eri riuscito a copiarla come l'aveva postata lui e che a me non riusciva.

Ecco il motivo per il quale ho scritto che non capivo perché il tuo preciso codice qui non avesse funzionato da subito.

Spero di essermi spiegato  :ciao:

E viva vuott che sa tutto di byte e di indiani grandi e piccoli  :)
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Riconvertire un'immagine dalla codifica in base64
« Risposta #9 il: 30 Novembre 2022, 02:11:16 »
Lui aveva postato nel primo post (che poi ha cambiato) una stringa che iniziava con "0x2f..." in realtà se tu avessi copiato quella stringa per poi incollarla in un editor di testo (gedit) come ho fatto io ti saresti subito accorto che si tramutava in "/9..."
Io ho dovuto lavorare inizialmente con la stringa (la prima) che lui aveva postato... quella avevo.
Non conoscevo questa facoltà di Gedit (tra l'altro io come editor ho Xed).



volevo chiederti come eri riuscito a copiarla come l'aveva postata lui e che a me non riusciva.
Mi sono semplicemente accorto che lui aveva postato i singoli caratteri numerici grafici stampabili , a coppia costituenti i valori in rappresentazione esadecimale.



di indiani grandi e piccoli 
...indiani ?!  ???
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Riconvertire un'immagine dalla codifica in base64
« Risposta #10 il: 30 Novembre 2022, 11:39:10 »
Lui aveva postato nel primo post (che poi ha cambiato) una stringa che iniziava con "0x2f..." in realtà se tu avessi copiato quella stringa per poi incollarla in un editor di testo (gedit) come ho fatto io ti saresti subito accorto che si tramutava in "/9..."
Io ho dovuto lavorare inizialmente con la stringa (la prima) che lui aveva postato... quella avevo.
Credo anche io (aveva postato codice .net), ma oramai non sono più sicuro di nulla dato il rimbambimento galoppante...
Citazione
Non conoscevo questa facoltà di Gedit (tra l'altro io come editor ho Xed).
Se non ho preso una cantonata, probabilmente anche xed si sarebbe comportato allo stesso modo di gedit
Citazione

volevo chiederti come eri riuscito a copiarla come l'aveva postata lui e che a me non riusciva.
Mi sono semplicemente accorto che lui aveva postato i singoli caratteri numerici grafici stampabili , a coppia costituenti i valori in rappresentazione esadecimale.
Ma tu, della sua stringa, cosa ne hai fatto: l'hai copiata direttamente nella IDE, oppure?
Citazione

di indiani grandi e piccoli 
...indiani ?!  ???

Licenza poetica per assonanza  :P

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.316
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Riconvertire un'immagine dalla codifica in base64
« Risposta #11 il: 30 Novembre 2022, 12:25:28 »
Ma tu, della sua stringa, cosa ne hai fatto: l'hai copiata direttamente nella IDE, oppure?
Sì, l'ho incollata tutta nel progetto del test, insomma nell'IDE.
« Ultima modifica: 30 Novembre 2022, 12:26:24 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »