use exif_tag_get_name_in_ifd() everywhere
exif tag names change with the ids they appear in, so you must always use exif_tag_get_name_in_ifd(), not exif_tag_get_name() see: https://github.com/jcupitt/libvips/pull/1030
This commit is contained in:
parent
274fd7468c
commit
d06c2fee22
@ -33,6 +33,7 @@
|
|||||||
- add `palette` option to pngsave [felixbuenemann]
|
- add `palette` option to pngsave [felixbuenemann]
|
||||||
- support writing string-valued fields via libexif
|
- support writing string-valued fields via libexif
|
||||||
- paste in the test suite from pyvips
|
- paste in the test suite from pyvips
|
||||||
|
- get EXIF tag names from tag plus ifd [@Nan619]
|
||||||
|
|
||||||
12/3/18 started 8.6.4
|
12/3/18 started 8.6.4
|
||||||
- better fitting of fonts with overhanging edges [Adrià]
|
- better fitting of fonts with overhanging edges [Adrià]
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
* - remove exif thumbnail if "jpeg-thumbnail-data" has been removed
|
* - remove exif thumbnail if "jpeg-thumbnail-data" has been removed
|
||||||
* 3/7/18
|
* 3/7/18
|
||||||
* - add support for writing string-valued fields
|
* - add support for writing string-valued fields
|
||||||
|
* 9/7/18 [@Nan619]
|
||||||
|
* - get tag name from tag plus ifd
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -309,6 +311,21 @@ typedef struct _VipsExifParams {
|
|||||||
ExifData *ed;
|
ExifData *ed;
|
||||||
} VipsExifParams;
|
} VipsExifParams;
|
||||||
|
|
||||||
|
/* tags do not uniquely set tag names: the same tag can have different
|
||||||
|
* names in different ifds.
|
||||||
|
*
|
||||||
|
* As long as this entry has been linked to an ifd, get the tag name.
|
||||||
|
*/
|
||||||
|
static const char *
|
||||||
|
vips_exif_entry_get_name( ExifEntry *entry )
|
||||||
|
{
|
||||||
|
if( !entry->parent )
|
||||||
|
return( NULL );
|
||||||
|
|
||||||
|
return( exif_tag_get_name_in_ifd( entry->tag,
|
||||||
|
exif_entry_get_ifd( entry ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
vips_exif_attach_entry( ExifEntry *entry, VipsExifParams *params )
|
vips_exif_attach_entry( ExifEntry *entry, VipsExifParams *params )
|
||||||
{
|
{
|
||||||
@ -317,9 +334,8 @@ vips_exif_attach_entry( ExifEntry *entry, VipsExifParams *params )
|
|||||||
VipsBuf vips_name = VIPS_BUF_STATIC( vips_name_txt );
|
VipsBuf vips_name = VIPS_BUF_STATIC( vips_name_txt );
|
||||||
char value_txt[256];
|
char value_txt[256];
|
||||||
VipsBuf value = VIPS_BUF_STATIC( value_txt );
|
VipsBuf value = VIPS_BUF_STATIC( value_txt );
|
||||||
ExifIfd ifd = exif_entry_get_ifd( entry );
|
|
||||||
|
|
||||||
if( !(tag_name = exif_tag_get_name_in_ifd( entry->tag, ifd )) )
|
if( !(tag_name = vips_exif_entry_get_name( entry )) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
vips_buf_appendf( &vips_name, "exif-ifd%d-%s",
|
vips_buf_appendf( &vips_name, "exif-ifd%d-%s",
|
||||||
@ -541,7 +557,7 @@ vips_exif_set_int( ExifData *ed,
|
|||||||
offset = component * sizeof_component;
|
offset = component * sizeof_component;
|
||||||
|
|
||||||
VIPS_DEBUG_MSG( "vips_exif_set_int: %s = %d\n",
|
VIPS_DEBUG_MSG( "vips_exif_set_int: %s = %d\n",
|
||||||
exif_tag_get_name( entry->tag ), value );
|
vips_exif_entry_get_name( entry ), value );
|
||||||
|
|
||||||
if( entry->format == EXIF_FORMAT_SHORT )
|
if( entry->format == EXIF_FORMAT_SHORT )
|
||||||
exif_set_short( entry->data + offset, bo, value );
|
exif_set_short( entry->data + offset, bo, value );
|
||||||
@ -619,7 +635,7 @@ vips_exif_set_rational( ExifData *ed,
|
|||||||
offset = component * sizeof_component;
|
offset = component * sizeof_component;
|
||||||
|
|
||||||
VIPS_DEBUG_MSG( "vips_exif_set_rational: %s = \"%s\"\n",
|
VIPS_DEBUG_MSG( "vips_exif_set_rational: %s = \"%s\"\n",
|
||||||
exif_tag_get_name( entry->tag ), value );
|
vips_exif_entry_get_name( entry ), value );
|
||||||
|
|
||||||
if( entry->format == EXIF_FORMAT_RATIONAL ) {
|
if( entry->format == EXIF_FORMAT_RATIONAL ) {
|
||||||
ExifRational rv;
|
ExifRational rv;
|
||||||
@ -673,7 +689,7 @@ vips_exif_set_double( ExifData *ed,
|
|||||||
offset = component * sizeof_component;
|
offset = component * sizeof_component;
|
||||||
|
|
||||||
VIPS_DEBUG_MSG( "vips_exif_set_double: %s = %g\n",
|
VIPS_DEBUG_MSG( "vips_exif_set_double: %s = %g\n",
|
||||||
exif_tag_get_name( entry->tag ), value );
|
vips_exif_entry_get_name( entry ), value );
|
||||||
|
|
||||||
if( entry->format == EXIF_FORMAT_RATIONAL ) {
|
if( entry->format == EXIF_FORMAT_RATIONAL ) {
|
||||||
ExifRational rv;
|
ExifRational rv;
|
||||||
@ -1192,7 +1208,7 @@ vips_exif_exif_entry( ExifEntry *entry, VipsExifRemove *ve )
|
|||||||
char vips_name_txt[256];
|
char vips_name_txt[256];
|
||||||
VipsBuf vips_name = VIPS_BUF_STATIC( vips_name_txt );
|
VipsBuf vips_name = VIPS_BUF_STATIC( vips_name_txt );
|
||||||
|
|
||||||
if( !(tag_name = exif_tag_get_name( entry->tag )) )
|
if( !(tag_name = vips_exif_entry_get_name( entry )) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
vips_buf_appendf( &vips_name, "exif-ifd%d-%s",
|
vips_buf_appendf( &vips_name, "exif-ifd%d-%s",
|
||||||
@ -1230,7 +1246,7 @@ vips_exif_exif_remove( ExifEntry *entry, VipsExifRemove *ve )
|
|||||||
char vips_name_txt[256];
|
char vips_name_txt[256];
|
||||||
VipsBuf vips_name = VIPS_BUF_STATIC( vips_name_txt );
|
VipsBuf vips_name = VIPS_BUF_STATIC( vips_name_txt );
|
||||||
|
|
||||||
tag_name = exif_tag_get_name( entry->tag );
|
tag_name = vips_exif_entry_get_name( entry );
|
||||||
vips_buf_appendf( &vips_name, "exif-ifd%d-%s",
|
vips_buf_appendf( &vips_name, "exif-ifd%d-%s",
|
||||||
exif_entry_get_ifd( entry ), tag_name );
|
exif_entry_get_ifd( entry ), tag_name );
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user