diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/exif_wrapper.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/lib/exif_wrapper.cpp b/lib/exif_wrapper.cpp index 21ee6c6..c4088ef 100644 --- a/lib/exif_wrapper.cpp +++ b/lib/exif_wrapper.cpp @@ -93,11 +93,31 @@ extern "C" void setExifOrientation(uint8_t* imgBytes, unsigned int size, unsigne image->setExifData(exifData); image->writeMetadata(); + + //TODO: fix problem of img file corruption caused by output being a different size + // to the input buffer + + FILE *fileptr; + char *buffer; + long filelen; + + fileptr = fopen(tmpFileName, "rb"); + fseek(fileptr, 0, SEEK_END); + filelen = ftell(fileptr); + rewind(fileptr); + + buffer = (char *)malloc(filelen * sizeof(char)); + fread(buffer, filelen, 1, fileptr); + fclose(fileptr); + + printf("new len: %ld old len: %d", filelen, size); + + // reopen temp file, copy result back into byte array - FILE* fileptr = fopen(tmpFileName, "rb"); + fileptr = fopen(tmpFileName, "rb"); fread(imgBytes, size, 1, fileptr); fclose(fileptr); - unlink(tmpFileName); +// unlink(tmpFileName); } catch (Exiv2::Error& e) { std::cout << "Caught Exiv2 exception '" << e.what() << "'\n"; |