PDA

View Full Version : Encode/decode base 64 images



fitzy
28th October 2009, 16:23
Hi there!

I'd like to encode/decode base 64 images.

I tried to use QByteArray::fromBase64(), but there is a problem : when run it on
(in one line)


R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAwAAAC8IyPqcvt3wCcDkiLc7C0qwyGHhS
WpjQu5yqmCYsapyuvUUlvONmOZtfzgFzByTB10QgxOR0TqBQej hRNzOfkVJ+5YiUqrXF5Y5lKh/De
uNcP5yLWGsEbtLiOSpa/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQ ZXZeYGejmJ
lZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtw vKOzrcd3iq9uisF81M1OIcR7lEeww
cLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PHhhx4dbgYKAAA7

it returns :
u«Z?f {úg¶¬{®"T?ÃB???

I compared with other tools that can convert base 64 images, and it is not correct.

Any idea :confused:

spirit
28th October 2009, 16:37
try an example from this thread (http://www.qtcentre.org/forum/f-qt-programming-2/t-how-can-i-store-and-retrive-image-sound-files-to-and-from-remaote-sql-server-24007.html/?highlight=base64), probably it should help you.

fitzy
28th October 2009, 17:59
thank you.
I tried QImage::fromData(QByteArray("some base64 data"), "jpg"); but the image I get is corrupted according to paint.

spirit
28th October 2009, 18:07
where did you get this base64 data? maybe this data has some additional header?

fitzy
28th October 2009, 18:23
I found the data here : http://davidbetz.net/Base64PngExample/Client/
I just typed "a", then I removed

data:image/png;base64,

ie I have this


iVBORw0KGgoAAAANSUhEUgAAAlgAAABkCAYAAABaQU4jAAAAAX etc

spirit
28th October 2009, 18:35
this code works fine


...
QByteArray by = QByteArray::fromBase64("iVBORw0KGgoAAAANSUhEUgAAAlgAAABkCAYAAABaQU4jAAAAAX NSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYA AICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAABblJRE FUeF7t3M1RwkAYBmDuXjzqgXiyARuwAiugAzuwBwdwxps10ARd 0EwiX2AxxKCEmRB+Hmcy4yTLZvMsh3c2HzsY+CNAgAABAgQIEC BAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgA ABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECDQu8DtZ3GTfRRPXQ4k+r 9/zx+r92g61+UY9E2AAAECBAgQOJrAcJq/ZdOi6DJkZZN8sTzmWwGr4dzRHtqNCBAgQIAAAQJdCghYXerqmw ABAgQIELhKAQHrKqfdQxMgQIAAAQJdCtQDVtRKxevCfV4ZDsf5 XWpbr7H673Vg02vDLp9T3wQIECBAgACBowmkgPUwKZ6Hk3xW1m OlI+qkdhTAl23j+nb7eVN7NVhHm043IkCAAAECBE5BYLOCtS46 z6b5KEJS5fxWcXqMOQrWI1gtQ9ZXWsGq9hMrW1awTmF2jYEAAQ IECBDoRWCfIFVdlUrtI1zVB5yN89d18JoJWL1Mp5sSIECAAAEC pyDwV5F7WqmqBqx0blfN1fp14ELAOoXZNQYCBAgQIECgF4EDAt aq7ipeEzYf5fVqAFOD1cvUuikBAgQIECDQl0AHAasMXgJWXzPq vgQIECBAgEDvAgcFrGVBfJuBW8Fqo6UtAQIECBAgcPYCbQPWz1 YO+ajp4aO/OKrXBKyz/5p4AAIECBAgQKCNQNuAFftlpRqsX9sx+BVhG3ptCRAgQIAAgUs VaBuwwqHc/2pV6L6I/8tVq7RJ6fJc/ReGVrAu9dvjuQgQIECAAIFGgXLvqlpRempYBqnd1142u7mvNil dha3aJqPrQDar75sVn23aS8s0ESBAgAABAgQIECBAgAABAgQIE CBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECB AgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAg AABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAA BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABA gQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQ IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIE CBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECB AgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAg AABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAA BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABA gQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQ IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIE CBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECB AgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAg AABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAA BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABA gQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQ IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIE CBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECB AgAABAgQIECBwrQLfmeUk6E23pFsAAAAASUVORK5CYII=");
QImage image = QImage::fromData(by, "PNG");
QLabel label;
label.setPixmap(QPixmap::fromImage(image));
label.show();
...

I've just inputted "hello" in that link then copied base64 data after "data:image/png;base64,".

spirit
28th October 2009, 18:38
btw, if you enter just one character then you will not get an image on that site, you should enter more then one character, I don't know why.
PS. when I entered "hello" I saw only "hell" in preview and I've got the same image in a label.