only rebuild heif exif if we have to
and fix write of XMP write in heic
This commit is contained in:
parent
fcaba0e6ba
commit
72ca38cab0
@ -147,10 +147,15 @@ static int
|
|||||||
vips_foreign_save_heif_write_metadata( VipsForeignSaveHeif *heif )
|
vips_foreign_save_heif_write_metadata( VipsForeignSaveHeif *heif )
|
||||||
{
|
{
|
||||||
#ifdef HAVE_HEIF_CONTEXT_ADD_EXIF_METADATA
|
#ifdef HAVE_HEIF_CONTEXT_ADD_EXIF_METADATA
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
struct heif_error error;
|
struct heif_error error;
|
||||||
|
|
||||||
|
/* Rebuild exif from tags, if we'll be saving it.
|
||||||
|
*/
|
||||||
|
if( vips_image_get_typeof( heif->image, VIPS_META_EXIF_NAME ) )
|
||||||
|
if( vips__exif_update( heif->image ) )
|
||||||
|
return( -1 );
|
||||||
|
|
||||||
for( i = 0; i < VIPS_NUMBER( libheif_metadata ); i++ )
|
for( i = 0; i < VIPS_NUMBER( libheif_metadata ); i++ )
|
||||||
if( vips_image_get_typeof( heif->image,
|
if( vips_image_get_typeof( heif->image,
|
||||||
libheif_metadata[i].name ) ) {
|
libheif_metadata[i].name ) ) {
|
||||||
@ -163,7 +168,7 @@ vips_foreign_save_heif_write_metadata( VipsForeignSaveHeif *heif )
|
|||||||
#endif /*DEBUG*/
|
#endif /*DEBUG*/
|
||||||
|
|
||||||
if( vips_image_get_blob( heif->image,
|
if( vips_image_get_blob( heif->image,
|
||||||
VIPS_META_EXIF_NAME, &data, &length ) )
|
libheif_metadata[i].name, &data, &length ) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
|
|
||||||
error = libheif_metadata[i].saver( heif->ctx,
|
error = libheif_metadata[i].saver( heif->ctx,
|
||||||
@ -327,14 +332,11 @@ vips_foreign_save_heif_build( VipsObject *object )
|
|||||||
build( object ) )
|
build( object ) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
|
|
||||||
/* Only rebuild exif if there's an EXIF block or we'll make a
|
/* Make a copy of the image in case we modify the metadata eg. for
|
||||||
* default set of tags. EXIF is not required for heif.
|
* exif_update.
|
||||||
*/
|
*/
|
||||||
if( vips_copy( save->ready, &heif->image, NULL ) )
|
if( vips_copy( save->ready, &heif->image, NULL ) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
if( vips_image_get_typeof( heif->image, VIPS_META_EXIF_NAME ) )
|
|
||||||
if( vips__exif_update( heif->image ) )
|
|
||||||
return( -1 );
|
|
||||||
|
|
||||||
error = heif_context_get_encoder_for_format( heif->ctx,
|
error = heif_context_get_encoder_for_format( heif->ctx,
|
||||||
(enum heif_compression_format) heif->compression,
|
(enum heif_compression_format) heif->compression,
|
||||||
|
Loading…
Reference in New Issue
Block a user