Я пытаюсь вставить некоторые данные EXIF в поток JPEG. Я использую libexif для этого.
Пример libexif показывает, как открыть файл -> добавить данные ->, а затем сохранить файл. Что у меня есть указатель (void * JPEGPointer
) в поток JPEG. Поэтому я хочу просто добавить сгенерированные из libexif данные к этому указателю для отправки их по FTP. Не сохраняется в файл. Следующий код в основном пример из libexif с некоторыми не работает memcpy()
попытки от себя. Файл JPG поврежден после memcpy, поэтому я не могу открыть его с любым программным обеспечением. Я думаю, что я копирую EXIF в неправильную позицию. Я не могу использовать любую дополнительную библиотеку, к сожалению.
// Set the image options
exif_data_set_option(exif, EXIF_DATA_OPTION_FOLLOW_SPECIFICATION);
exif_data_set_data_type(exif, EXIF_DATA_TYPE_COMPRESSED);
exif_data_set_byte_order(exif, FILE_BYTE_ORDER);
// Create the mandatory EXIF fields with default data
exif_data_fix(exif);
/* Create a EXIF_TAG_USER_COMMENT tag. This one must be handled
* differently because that tag isn't automatically created and
* allocated by exif_data_fix(), nor can it be created using
* exif_entry_initialize() so it must be explicitly allocated here.
*/
entry = createTag(exif, EXIF_IFD_EXIF, EXIF_TAG_USER_COMMENT,
sizeof(ASCII_COMMENT) + sizeof(FILE_COMMENT) - 2);
/* Write the special header needed for a comment tag */
memcpy(entry->data, ASCII_COMMENT, sizeof(ASCII_COMMENT)-1);
/* Write the actual comment text, without the trailing NUL character */
memcpy(entry->data+8, FILE_COMMENT, sizeof(FILE_COMMENT)-1);
/* createTag() happens to set the format and components correctly for
* EXIF_TAG_USER_COMMENT, so there is nothing more to do. */
/* Get a pointer to the EXIF data block we just created */
exif_data_save_data(exif, &exif_data, &exif_data_len);
assert(exif_data != NULL);
//copy exif data to my JPEGPointer...not working like that
memcpy(JPEGPointer+ exif_data_len * sizeof(uint8_t), JPEGPointer, sizeof(JPEGPointer)+exif_data_len);
free(exif_data);
exif_data_unref(exif);
Любые идеи, как поместить эти данные EXIF в правильное положение в данных JPEG?
Задача ещё не решена.
Других решений пока нет …