add note on profile types
This commit is contained in:
parent
e131f173a0
commit
086f1b2ba8
|
@ -178,10 +178,16 @@ vips_foreign_load_heif_set_handle( VipsForeignLoadHeif *heif, heif_item_id id )
|
||||||
static int
|
static int
|
||||||
vips_foreign_load_heif_set_header( VipsForeignLoadHeif *heif, VipsImage *out )
|
vips_foreign_load_heif_set_header( VipsForeignLoadHeif *heif, VipsImage *out )
|
||||||
{
|
{
|
||||||
guint width;
|
enum heif_color_profile_type profile_type =
|
||||||
guint height;
|
heif_image_handle_get_color_profile_type( heif->handle );
|
||||||
gboolean has_alpha;
|
int width = heif_image_handle_get_width( heif->handle );
|
||||||
guint bands;
|
int height = heif_image_handle_get_height( heif->handle );
|
||||||
|
/* FIXME none of the Nokia test images seem to set this true.
|
||||||
|
*/
|
||||||
|
gboolean has_alpha =
|
||||||
|
heif_image_handle_has_alpha_channel( heif->handle );
|
||||||
|
int bands = has_alpha ? 4 : 3;
|
||||||
|
|
||||||
/* Surely, 16 will be enough for anyone.
|
/* Surely, 16 will be enough for anyone.
|
||||||
*/
|
*/
|
||||||
heif_item_id id[16];
|
heif_item_id id[16];
|
||||||
|
@ -189,14 +195,6 @@ vips_foreign_load_heif_set_header( VipsForeignLoadHeif *heif, VipsImage *out )
|
||||||
int i;
|
int i;
|
||||||
struct heif_error error;
|
struct heif_error error;
|
||||||
|
|
||||||
width = heif_image_handle_get_width( heif->handle );
|
|
||||||
height = heif_image_handle_get_height( heif->handle );
|
|
||||||
|
|
||||||
/* FIXME none of the Nokia test images seem to set this true.
|
|
||||||
*/
|
|
||||||
has_alpha = heif_image_handle_has_alpha_channel( heif->handle );
|
|
||||||
bands = has_alpha ? 4 : 3;
|
|
||||||
|
|
||||||
vips_image_pipelinev( out, VIPS_DEMAND_STYLE_SMALLTILE, NULL );
|
vips_image_pipelinev( out, VIPS_DEMAND_STYLE_SMALLTILE, NULL );
|
||||||
vips_image_init_fields( out,
|
vips_image_init_fields( out,
|
||||||
width, height, bands, VIPS_FORMAT_UCHAR,
|
width, height, bands, VIPS_FORMAT_UCHAR,
|
||||||
|
@ -247,6 +245,31 @@ vips_foreign_load_heif_set_header( VipsForeignLoadHeif *heif, VipsImage *out )
|
||||||
(void) vips__exif_parse( out );
|
(void) vips__exif_parse( out );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch( profile_type ) {
|
||||||
|
case heif_color_profile_type_not_present:
|
||||||
|
printf( "no profile\n" );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case heif_color_profile_type_nclx:
|
||||||
|
printf( "nclx profile\n" );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case heif_color_profile_type_rICC:
|
||||||
|
printf( "rICC profile\n" );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case heif_color_profile_type_prof:
|
||||||
|
printf( "prof profile\n" );
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
printf( "unknown profile type\n" );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FIXME should probably check the profile type ... lcms seems to be
|
||||||
|
* able to load at least rICC and prof.
|
||||||
|
*/
|
||||||
if( heif_image_handle_get_color_profile_type( heif->handle ) ) {
|
if( heif_image_handle_get_color_profile_type( heif->handle ) ) {
|
||||||
size_t length = heif_image_handle_get_raw_color_profile_size(
|
size_t length = heif_image_handle_get_raw_color_profile_size(
|
||||||
heif->handle );
|
heif->handle );
|
||||||
|
|
Loading…
Reference in New Issue