support --strip for pngsave
This commit is contained in:
parent
b5781a5760
commit
5637971a36
@ -30,6 +30,7 @@
|
|||||||
- added vips_worley(), generate Worley noise
|
- added vips_worley(), generate Worley noise
|
||||||
- added vips_perlin(), generate Perlin noise
|
- added vips_perlin(), generate Perlin noise
|
||||||
- gif loader can write 1, 2, 3, or 4 bands depending on file contents
|
- gif loader can write 1, 2, 3, or 4 bands depending on file contents
|
||||||
|
- support --strip for pngsave
|
||||||
|
|
||||||
30/7/16 started 8.3.3
|
30/7/16 started 8.3.3
|
||||||
- fix performance regression in 8.3.2, thanks Lovell
|
- fix performance regression in 8.3.2, thanks Lovell
|
||||||
|
@ -164,8 +164,9 @@ vips_foreign_save_png_file_build( VipsObject *object )
|
|||||||
build( object ) )
|
build( object ) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
|
|
||||||
if( vips__png_write( save->ready, png_file->filename,
|
if( vips__png_write( save->ready,
|
||||||
png->compression, png->interlace, png->profile, png->filter ) )
|
png_file->filename, png->compression, png->interlace,
|
||||||
|
png->profile, png->filter, save->strip ) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
|
|
||||||
return( 0 );
|
return( 0 );
|
||||||
@ -223,7 +224,8 @@ vips_foreign_save_png_buffer_build( VipsObject *object )
|
|||||||
return( -1 );
|
return( -1 );
|
||||||
|
|
||||||
if( vips__png_write_buf( save->ready, &obuf, &olen,
|
if( vips__png_write_buf( save->ready, &obuf, &olen,
|
||||||
png->compression, png->interlace, png->profile, png->filter ) )
|
png->compression, png->interlace, png->profile, png->filter,
|
||||||
|
save->strip ) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
|
|
||||||
/* vips__png_write_buf() makes a buffer that needs g_free(), not
|
/* vips__png_write_buf() makes a buffer that needs g_free(), not
|
||||||
|
@ -55,6 +55,9 @@
|
|||||||
* 26/2/15
|
* 26/2/15
|
||||||
* - close the read down early for a header read ... this saves an
|
* - close the read down early for a header read ... this saves an
|
||||||
* fd during file read, handy for large numbers of input images
|
* fd during file read, handy for large numbers of input images
|
||||||
|
* 31/7/16
|
||||||
|
* - support --strip option
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -808,8 +811,9 @@ write_png_block( VipsRegion *region, VipsRect *area, void *a )
|
|||||||
/* Write a VIPS image to PNG.
|
/* Write a VIPS image to PNG.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
write_vips( Write *write, int compress, int interlace, const char *profile,
|
write_vips( Write *write,
|
||||||
VipsForeignPngFilter filter )
|
int compress, int interlace, const char *profile,
|
||||||
|
VipsForeignPngFilter filter, gboolean strip )
|
||||||
{
|
{
|
||||||
VipsImage *in = write->in;
|
VipsImage *in = write->in;
|
||||||
|
|
||||||
@ -883,7 +887,8 @@ write_vips( Write *write, int compress, int interlace, const char *profile,
|
|||||||
|
|
||||||
/* Set ICC Profile.
|
/* Set ICC Profile.
|
||||||
*/
|
*/
|
||||||
if( profile ) {
|
if( profile &&
|
||||||
|
!strip ) {
|
||||||
if( strcmp( profile, "none" ) != 0 ) {
|
if( strcmp( profile, "none" ) != 0 ) {
|
||||||
void *data;
|
void *data;
|
||||||
size_t length;
|
size_t length;
|
||||||
@ -902,7 +907,8 @@ write_vips( Write *write, int compress, int interlace, const char *profile,
|
|||||||
PNG_COMPRESSION_TYPE_BASE, data, length );
|
PNG_COMPRESSION_TYPE_BASE, data, length );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( vips_image_get_typeof( in, VIPS_META_ICC_NAME ) ) {
|
else if( vips_image_get_typeof( in, VIPS_META_ICC_NAME ) &&
|
||||||
|
!strip ) {
|
||||||
void *data;
|
void *data;
|
||||||
size_t length;
|
size_t length;
|
||||||
|
|
||||||
@ -951,7 +957,7 @@ write_vips( Write *write, int compress, int interlace, const char *profile,
|
|||||||
int
|
int
|
||||||
vips__png_write( VipsImage *in, const char *filename,
|
vips__png_write( VipsImage *in, const char *filename,
|
||||||
int compress, int interlace, const char *profile,
|
int compress, int interlace, const char *profile,
|
||||||
VipsForeignPngFilter filter )
|
VipsForeignPngFilter filter, gboolean strip )
|
||||||
{
|
{
|
||||||
Write *write;
|
Write *write;
|
||||||
|
|
||||||
@ -970,7 +976,8 @@ vips__png_write( VipsImage *in, const char *filename,
|
|||||||
|
|
||||||
/* Convert it!
|
/* Convert it!
|
||||||
*/
|
*/
|
||||||
if( write_vips( write, compress, interlace, profile, filter ) ) {
|
if( write_vips( write,
|
||||||
|
compress, interlace, profile, filter, strip ) ) {
|
||||||
vips_error( "vips2png",
|
vips_error( "vips2png",
|
||||||
_( "unable to write \"%s\"" ), filename );
|
_( "unable to write \"%s\"" ), filename );
|
||||||
|
|
||||||
@ -1026,7 +1033,7 @@ user_write_data( png_structp png_ptr, png_bytep data, png_size_t length )
|
|||||||
int
|
int
|
||||||
vips__png_write_buf( VipsImage *in,
|
vips__png_write_buf( VipsImage *in,
|
||||||
void **obuf, size_t *olen, int compression, int interlace,
|
void **obuf, size_t *olen, int compression, int interlace,
|
||||||
const char *profile, VipsForeignPngFilter filter )
|
const char *profile, VipsForeignPngFilter filter, gboolean strip )
|
||||||
{
|
{
|
||||||
Write *write;
|
Write *write;
|
||||||
|
|
||||||
@ -1037,7 +1044,8 @@ vips__png_write_buf( VipsImage *in,
|
|||||||
|
|
||||||
/* Convert it!
|
/* Convert it!
|
||||||
*/
|
*/
|
||||||
if( write_vips( write, compression, interlace, profile, filter ) ) {
|
if( write_vips( write,
|
||||||
|
compression, interlace, profile, filter, strip ) ) {
|
||||||
vips_error( "vips2png",
|
vips_error( "vips2png",
|
||||||
"%s", _( "unable to write to buffer" ) );
|
"%s", _( "unable to write to buffer" ) );
|
||||||
|
|
||||||
|
@ -48,10 +48,10 @@ int vips__png_header_buffer( const void *buffer, size_t length,
|
|||||||
|
|
||||||
int vips__png_write( VipsImage *in, const char *filename,
|
int vips__png_write( VipsImage *in, const char *filename,
|
||||||
int compress, int interlace, const char *profile,
|
int compress, int interlace, const char *profile,
|
||||||
VipsForeignPngFilter filter );
|
VipsForeignPngFilter filter, gboolean strip );
|
||||||
int vips__png_write_buf( VipsImage *in,
|
int vips__png_write_buf( VipsImage *in,
|
||||||
void **obuf, size_t *olen, int compression, int interlace,
|
void **obuf, size_t *olen, int compression, int interlace,
|
||||||
const char *profile, VipsForeignPngFilter filter );
|
const char *profile, VipsForeignPngFilter filter, gboolean strip );
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user