Pregunta

Estoy interesado en inyectar manualmente los campos IPTC en el archivo JPG en el nivel de bytes.El archivo JPEG tiene varios segmentos de metadatos con marcadores de tamaño respetable.Los segmentos-contenedores para IPTC son:

app13 - comienza con FF ED XX XX ..

8BIM IPTC Metadata - comienza con 38 42 49 4D 04 04 00 00 00 00 XX XX ..

iptc El campo comienza con 1C 02 50 XX XX .. (0x50= 80, IPTC Field # 80).

(xx xx= 2 bytes de longitud-palabra que describe el tamaño de los datos de segmento mencionados).

¿Hay algún otro tipo de tamaño en el archivo JPEG y los metadatos para buscar?¿Tengo que aumentar su tamaño al agregar segmento de metadatos con campos IPTC personalizados?

¿Cómo puedo agregar un campo de metadatos personalizados (por ejemplo, # 225) que funcionará en todas las imágenes JPEG que ya contienen el segmento IPTC?

Trabajando en C #, pero es una pregunta sobre las operaciones en bytes, así que supongo que el idioma no importa.

¿Fue útil?

Solución

Ya que nadie respondió, explicaré lo que hice.

ad 1. Los marcadores de archivo que mencioné anteriormente son suficientes para manipular IPTC.

ad 2. Durante la manipulación manual IPTC en el nivel de bytes, puede dañar fácilmente el archivo si elimina o sobrescriba accidentalmente los bytes existentes, especialmente si son marcadores (encabezados de alguna parte de archivo JPEG).

AD 3. Uno tiene que encontrar y aumentar la APP13 y los marcadores apropiados de 8BIM e IPTC con la longitud del nuevo campo de metadatos (tamaño de contenido + 5 bytes para el encabezado IPTC). Así que, por ejemplo, para agregar un nuevo campo # 09, debe encontrar un segmento IPTC de 8BIM (38 42 49 4D 04 04 00 00 00 00 xx XX) y aumentar xx xx bytes con un nuevo tamaño de palabra. Luego aumente el segmento de la APP13 de envoltura (encuentre el último segmento FF ED XX XX antes de 8BIM) y, finalmente, al final de las 8BIM (conoce el final gracias a los bytes de longitud del segmento), simplemente agregue un nuevo campo IPTC como 1C 02 09 00 05 - Agrega el campo de metadatos # 09 de la longitud 5. Los siguientes 5 bytes se considerarán un contenido de campo= la palabra que agrega.

Sí, es un poco caótico pero funciona: -)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top