enable alpha in heifsave
Check for image alpha and enable it. There seem to be some non-transparent tiles, curiously. See https://github.com/libvips/libvips/issues/1411
This commit is contained in:
parent
75b45cc2ef
commit
da8cee048f
@ -11,7 +11,7 @@
|
||||
- add vips_switch() / vips_case() ... fast many-way ifthenelse
|
||||
- better const handling for arithmetic operators fixes comparisons against out
|
||||
of range values
|
||||
- handle alpha in heifload [meyermarcel]
|
||||
- handle alpha in heifload / heifsave [meyermarcel]
|
||||
|
||||
31/8/19 started 8.8.3
|
||||
- revert sharpen restoring the input colourspace
|
||||
|
@ -4,6 +4,8 @@
|
||||
* - from niftisave.c
|
||||
* 3/7/19 [lovell]
|
||||
* - add "compression" option
|
||||
* 1/9/19 [meyermarcel]
|
||||
* - save alpha when necessary
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -199,10 +201,8 @@ vips_foreign_save_heif_write_page( VipsForeignSaveHeif *heif, int page )
|
||||
|
||||
#ifdef HAVE_HEIF_ENCODING_OPTIONS_ALLOC
|
||||
options = heif_encoding_options_alloc();
|
||||
/* FIXME .. should be an option, though I don't know of any way to
|
||||
* test it
|
||||
*/
|
||||
options->save_alpha_channel = 1;
|
||||
if( vips_image_hasalpha( save->ready ) )
|
||||
options->save_alpha_channel = 1;
|
||||
#else /*!HAVE_HEIF_ENCODING_OPTIONS_ALLOC*/
|
||||
options = NULL;
|
||||
#endif /*HAVE_HEIF_ENCODING_OPTIONS_ALLOC*/
|
||||
@ -294,6 +294,7 @@ vips_foreign_save_heif_build( VipsObject *object )
|
||||
VipsForeignSaveHeif *heif = (VipsForeignSaveHeif *) object;
|
||||
|
||||
struct heif_error error;
|
||||
enum heif_chroma chroma;
|
||||
|
||||
if( VIPS_OBJECT_CLASS( vips_foreign_save_heif_parent_class )->
|
||||
build( object ) )
|
||||
@ -335,8 +336,10 @@ vips_foreign_save_heif_build( VipsObject *object )
|
||||
/* Make a heif image the size of a page. We send sink_disc() output
|
||||
* here and write a frame each time it fills.
|
||||
*/
|
||||
chroma = vips_image_hasalpha( save->ready ) ?
|
||||
heif_chroma_interleaved_RGBA : heif_chroma_interleaved_RGB;
|
||||
error = heif_image_create( heif->page_width, heif->page_height,
|
||||
heif_colorspace_RGB, heif_chroma_interleaved_RGB, &heif->img );
|
||||
heif_colorspace_RGB, chroma, &heif->img );
|
||||
if( error.code ) {
|
||||
vips__heif_error( &error );
|
||||
return( -1 );
|
||||
@ -394,7 +397,7 @@ vips_foreign_save_heif_class_init( VipsForeignSaveHeifClass *class )
|
||||
|
||||
foreign_class->suffs = vips__heif_suffs;
|
||||
|
||||
save_class->saveable = VIPS_SAVEABLE_RGB;
|
||||
save_class->saveable = VIPS_SAVEABLE_RGBA_ONLY;
|
||||
save_class->format_table = vips_heif_bandfmt;
|
||||
|
||||
VIPS_ARG_INT( class, "Q", 10,
|
||||
|
Loading…
Reference in New Issue
Block a user