setting EXIF data blocks sets other tags too
calling vips_image_set() to set the EXIF data block VIPS_META_EXIF_NAME will automaticaly set other tags, like orientation etc.
This commit is contained in:
parent
6013962288
commit
9c8790b40a
@ -40,6 +40,7 @@
|
|||||||
- add gif-delay, gif-comment and gif-loop metadata
|
- add gif-delay, gif-comment and gif-loop metadata
|
||||||
- add dispose handling to gifload
|
- add dispose handling to gifload
|
||||||
- deprecate the "centre" option for vips_resize(): it's now always on
|
- deprecate the "centre" option for vips_resize(): it's now always on
|
||||||
|
- setting the EXIF data block automatically sets other image tags
|
||||||
|
|
||||||
29/8/17 started 8.5.9
|
29/8/17 started 8.5.9
|
||||||
- make --fail stop jpeg read on any libjpeg warning, thanks @mceachen
|
- make --fail stop jpeg read on any libjpeg warning, thanks @mceachen
|
||||||
|
@ -484,7 +484,7 @@ vips__exif_parse( VipsImage *image )
|
|||||||
return( -1 );
|
return( -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure all required fields are there before we attach to vips
|
/* Make sure all required fields are there before we attach the vips
|
||||||
* metadata.
|
* metadata.
|
||||||
*/
|
*/
|
||||||
exif_data_fix( ed );
|
exif_data_fix( ed );
|
||||||
|
@ -514,9 +514,6 @@ read_jpeg_header( ReadJpeg *jpeg, VipsImage *out )
|
|||||||
(VipsCallbackFn) vips_free, data, data_length );
|
(VipsCallbackFn) vips_free, data, data_length );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( vips__exif_parse( out ) )
|
|
||||||
return( -1 );
|
|
||||||
|
|
||||||
/* Tell downstream we are reading sequentially.
|
/* Tell downstream we are reading sequentially.
|
||||||
*/
|
*/
|
||||||
vips_image_set_area( out, VIPS_META_SEQUENTIAL, NULL, NULL );
|
vips_image_set_area( out, VIPS_META_SEQUENTIAL, NULL, NULL );
|
||||||
|
@ -239,9 +239,6 @@ int vips__openslide_read( const char *filename, VipsImage *out,
|
|||||||
int vips__openslide_read_associated( const char *filename, VipsImage *out,
|
int vips__openslide_read_associated( const char *filename, VipsImage *out,
|
||||||
const char *associated );
|
const char *associated );
|
||||||
|
|
||||||
int vips__exif_parse( VipsImage *image );
|
|
||||||
int vips__exif_update( VipsImage *image );
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif /*__cplusplus*/
|
#endif /*__cplusplus*/
|
||||||
|
@ -53,6 +53,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include <vips/vips.h>
|
#include <vips/vips.h>
|
||||||
|
#include <vips/internal.h>
|
||||||
|
|
||||||
#include "pforeign.h"
|
#include "pforeign.h"
|
||||||
|
|
||||||
|
@ -269,11 +269,6 @@ read_header( Read *read, VipsImage *out )
|
|||||||
}
|
}
|
||||||
|
|
||||||
WebPMuxDelete( mux );
|
WebPMuxDelete( mux );
|
||||||
|
|
||||||
/* We may have read some exif ... parse into the header.
|
|
||||||
*/
|
|
||||||
if( vips__exif_parse( out ) )
|
|
||||||
return( -1 );
|
|
||||||
}
|
}
|
||||||
#endif /*HAVE_LIBWEBPMUX*/
|
#endif /*HAVE_LIBWEBPMUX*/
|
||||||
|
|
||||||
|
@ -52,6 +52,9 @@ typedef struct _VipsMeta {
|
|||||||
GValue value; /* copy of value */
|
GValue value; /* copy of value */
|
||||||
} VipsMeta;
|
} VipsMeta;
|
||||||
|
|
||||||
|
int vips__exif_parse( VipsImage *image );
|
||||||
|
int vips__exif_update( VipsImage *image );
|
||||||
|
|
||||||
void vips_check_init( void );
|
void vips_check_init( void );
|
||||||
|
|
||||||
void vips__meta_init_types( void );
|
void vips__meta_init_types( void );
|
||||||
|
@ -962,6 +962,16 @@ vips_image_set( VipsImage *image, const char *name, GValue *value )
|
|||||||
meta_init( image );
|
meta_init( image );
|
||||||
(void) meta_new( image, name, value );
|
(void) meta_new( image, name, value );
|
||||||
|
|
||||||
|
/* If we're setting an EXIF data block, we need to automatically expand
|
||||||
|
* out all the tags. This will set things like xres/yres too.
|
||||||
|
*
|
||||||
|
* We do this herfe rather than in meta_new() since we don't want to
|
||||||
|
* trigger on copy_fields.
|
||||||
|
*/
|
||||||
|
if( strcmp( name, VIPS_META_EXIF_NAME ) == 0 )
|
||||||
|
if( vips__exif_parse( image ) )
|
||||||
|
g_warning( "image_set: bad exif data" );
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
meta_sanity( image );
|
meta_sanity( image );
|
||||||
#endif /*DEBUG*/
|
#endif /*DEBUG*/
|
||||||
|
Loading…
Reference in New Issue
Block a user