[Interest] displaying Qt-coded JPEG image in browser

Henry Skoglund henry at tungware.se
Fri Jan 26 14:17:54 CET 2024


On 2024-01-26 13:55, Alexander Carôt via Interest wrote:
> Hi all,
>
> I have a raw image:
>
> QImage *img = new QImage(imgBufferOut,
>                           reso.width(),
>                           reso.height(),
>                           QImage::Format_RGB888);
>
>
> that I convert to JPG via
>
>
> QBuffer bufferJpeg;
> bufferJpeg.open(QIODevice::WriteOnly);
> img->save(&bufferJpeg, "JPEG");
> finalJpg = bufferJpeg.data();
>
>
> Now I transfer the content finalJpg in form of a Base64 encoded QString via a websocket to a web browser. Within the browser it should be displayed via
>
>
> const imageDataUri ="data:image/jpeg;base64,"  + msg.jpgBuffer;
> videoImage.src = imageDataUri;
>
>
> Now my question is how should I create the required sting ? I tried:
>
>
> QString jpgBufferString( finalJpg.data() );
> QString encodedString = jpgBufferString.toUtf8().toBase64();
>
>
> but this does not decode the image and simply shows the broken image icon in the browser.
>
> Can anyone help with this ?
>
> Thanks in advance,
> best
>
> Alex
>

Hi, maybe passing JPG through fromUtf8() and toUtf8() munges it too 
much, what happens if you simplify, instead of:

QString jpgBufferString( finalJpg.data() );
QString encodedString = jpgBufferString.toUtf8().toBase64();

try:
QString encodedString = finalJpg.data().toBase64();



More information about the Interest mailing list