QFile to char[]
-
Hi,
I found a sample code in libexif-0.6.21.zip
https://github.com/wang-bin/libexif-port/blob/master/contrib/examples/write-exif.c
which saves image to file with Exif information. In order to get image from file, I replacedstatic const unsigned char image_jpg[] = { 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, 0x01, 0x01, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, 0xff, 0xdb, 0x00, 0x43, ... }; unsigned int image_jpg_len = sizeof(image_jpg);
by
QFile fileIn("D:/myfile.jpg"); fileIn.open(QIODevice::ReadOnly); QByteArray ba = fileIn.readAll(); fileIn.close(); unsigned char* image_jpg = (unsigned char*) ba.data(); unsigned int image_jpg_len = ba.size();
but the saved image is invalid. Is there some mistake?
-
@samdol said in QFile to char[]:
but the saved image is invalid
What is invalid? Did you try to check the file content using an hex editor? Do you mean what you read is different from what you wrote?
-
@samdol said in QFile to char[]:
unsigned char* image_jpg = (unsigned char*) ba.data();
But if the ba contains zeros, what will happen ?
the docs notes this
"Note: A QByteArray can store any byte values including '\0's, but most functions that take char * arguments assume that the data ends at the first '\0' they encounter." -
@JNBarchan
I found that if I use a file without EXIF info, it works. But if the file already has EXIF info, it did not work. I Could not see the image. Then the solution for file with EXIF would be to get the image char* without EXIF. But I don't know how to do that. -
@samdol
So if, for whatever reason, you are saying you need to remove EXIF information from your JPEG file to make it "acceptable", since you quoted the source at https://github.com/wang-bin/libexif-port/blob/master/contrib/examples/write-exif.c for adding the EXIF info into the file, you can look at it and "reverse engineer" how to remove it, can't you?https://en.wikipedia.org/wiki/Exif:
When Exif is employed for JPEG files, the Exif data are stored in one of JPEG's defined utility Application Segments, the APP1 (segment marker 0xFFE1), which in effect holds an entire TIFF file within
Or, Googling
remove exif data
gives lots of hits for how to remove it.Or, find yourself a "previewer" which does not get confused by the embedded information?
BTW, https://forum.qt.io/topic/84097/qimagewriter-and-exif shows some stuff to do with getting at EXIF information, might help you.