/* Read a PNG file header into a VIPS header. */ int vips__png_header( const char *name, VipsImage *out ) { Read *read; if( !(read = read_new_filename( out, name, FALSE )) || png2vips_header( read, out ) ) return( -1 ); return( 0 ); }
/* Read a PNG file header into a VIPS header. */ int vips__png_header( const char *name, VipsImage *out ) { Read *read; if( !(read = read_new_filename( out, name, FALSE )) || png2vips_header( read, out ) ) return( -1 ); /* Just a header read: we can free the read early and save an fd. */ read_destroy( read ); return( 0 ); }
/* Interlaced PNGs need to be entirely decompressed into memory then can be * served partially from there. Non-interlaced PNGs may be read sequentially. */ gboolean vips__png_isinterlaced( const char *filename ) { VipsImage *image; Read *read; int interlace_type; image = vips_image_new(); if( !(read = read_new_filename( image, filename, FALSE )) ) { g_object_unref( image ); return( -1 ); } interlace_type = png_get_interlace_type( read->pPng, read->pInfo ); g_object_unref( image ); return( interlace_type != PNG_INTERLACE_NONE ); }
int vips__png_read( const char *filename, VipsImage *out, gboolean readbehind ) { Read *read; #ifdef DEBUG printf( "vips__png_read: reading \"%s\"\n", filename ); #endif /*DEBUG*/ if( !(read = read_new_filename( out, filename, readbehind )) || png2vips_image( read, out ) ) return( -1 ); #ifdef DEBUG printf( "vips__png_read: done\n" ); #endif /*DEBUG*/ return( 0 ); }