Как разместить теги EXIF ​​в JPG, имея необработанный буфер jpeg в C++?

У меня небольшая проблема.

Я получаю буфер RAW char * с камеры, и мне нужно добавить эти теги, прежде чем я смогу сохранить его на диск. Запись файла на диск и его повторное чтение не вариант, так как это будет происходить тысячи раз.

Данные буфера, которые я получаю от камеры, не содержат никакой информации EXIF, кроме ширины, высоты и пикселей на дюйм.

Есть идеи? (C++)

➝ посмотрите на XMP Metadata Toolkit (Adobe, но несколько с открытым исходным кодом), в частности XMPFiles ...

Frank Nocke 19.02.2016 13:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
1
2 417
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Какая разница? Почему выполнение этого действия с файлом на диске будет отличаться от выполнения этого действия в памяти?

Просто делайте то, что вы делаете после того, как прочитаете файл с диска ..

Насколько мне известно, данные EXIF ​​в JPEG являются непрерывной частью файла. Так

  1. подготовить данные EXIF ​​в памяти
  2. записать часть файла JPEG до EXIF
  3. написать подготовленный EXIF
  4. записать остаток файла JPEG
Ответ принят как подходящий

Посмотрите на этот PDF, на странице 20 у вас есть диаграмма, показывающая, что вы должны были разместить или изменить свою exif-информацию. В чем разница с файлом на диске?

Содержит ли буфер JPEG вашей камеры раздел EXIF?

Нет, буфер JPEG с камеры не содержит раздела EXIF

Hannes 18.09.2008 12:41

Спасибо. Это помогает ... он отличается от стандарта JFIF

Hannes 18.09.2008 14:09

Возможно, вы захотите заглянуть в библиотеку Exiv2. Я знаю, что он может работать с файлами, но я полагаю, что он также имеет функции для работы с буферами памяти.

Обратите внимание, что Exiv2 не является бесплатным для коммерческого использования.

Yoav 05.10.2012 14:21

На самом деле это ужасное недоразумение. Exiv2 имеет двойную лицензию GPL и коммерческую. GPL имеет свои требования - да, но не запрещает вам использовать ее в коммерческих продуктах.

Marcin Gil 05.10.2012 14:42

Извини за это. Так можно ли использовать Exiv2 как часть коммерческого продукта, если я не изменяю исходные файлы Exiv2 (но включаю его файлы заголовков из моих исходных файлов и ссылаюсь на его исходные файлы)?

Yoav 05.10.2012 15:15

Ваш коммерческий продукт должен иметь открытый исходный код и лицензию GPL. Это ограничение. Но на самом деле никто не запрещает вам его монетизировать. Отсюда мой комментарий по поводу недопонимания. В противном случае вы можете купить коммерческую лицензию.

Marcin Gil 05.10.2012 15:21

Так что это не бесплатно. Вы платите, делая свой продукт открытым по определенной лицензии. Я по-прежнему считаю, что утверждение, что Exiv2 бесплатна для коммерческих продуктов, вводит в заблуждение (потому что это не бесплатно для большинства коммерческих продуктов).

Yoav 05.10.2012 16:27

Другие вопросы по теме