tiff loader always offers thinstrip
the tiff loader now always offers thinstrip ... later stages can then pick any demand style they like (thanks Diuming)
This commit is contained in:
parent
f65f9088f6
commit
fc3d4192d7
@ -3,6 +3,7 @@
|
|||||||
- use TIFF_CFLAGS output from pkg-config (thanks Jay)
|
- use TIFF_CFLAGS output from pkg-config (thanks Jay)
|
||||||
- much faster vips_argument_map()
|
- much faster vips_argument_map()
|
||||||
- make jpeg pyramids work with tiff4
|
- make jpeg pyramids work with tiff4
|
||||||
|
- tiff loader always offers THINSTRIP (thanks Diuming)
|
||||||
|
|
||||||
19/4/12 started 7.28.5
|
19/4/12 started 7.28.5
|
||||||
- ifthenelse blend mode was broken
|
- ifthenelse blend mode was broken
|
||||||
|
@ -2151,19 +2151,10 @@ vips_fitssave( VipsImage *in, const char *filename, ... )
|
|||||||
*
|
*
|
||||||
* Optional arguments:
|
* Optional arguments:
|
||||||
*
|
*
|
||||||
* @sequential: sequential read only
|
|
||||||
*
|
|
||||||
* Read a PNG file into a VIPS image. It can read all png images, including 8-
|
* Read a PNG file into a VIPS image. It can read all png images, including 8-
|
||||||
* and 16-bit images, 1 and 3 channel, with and without an alpha channel.
|
* and 16-bit images, 1 and 3 channel, with and without an alpha channel.
|
||||||
*
|
*
|
||||||
* Setting @sequential to %TRUE means you promise to only demand tiles from
|
* Any ICC profile is read and attached to the VIPS image.
|
||||||
* this image top-top-bottom, ie. to read sequentially. This means the png
|
|
||||||
* loader can read directly from the image without having to generate a
|
|
||||||
* random-access intermediate. This can save a lot of time and memory for
|
|
||||||
* large images, but limits the sorts of operation you can perform. It's
|
|
||||||
* useful for things like generating thumbnails.
|
|
||||||
*
|
|
||||||
* There is no support for embedded ICC profiles.
|
|
||||||
*
|
*
|
||||||
* See also: vips_image_new_from_file().
|
* See also: vips_image_new_from_file().
|
||||||
*
|
*
|
||||||
@ -2202,7 +2193,9 @@ vips_pngload( const char *filename, VipsImage **out, ... )
|
|||||||
* than an interlaced PNG can be up to 7 times slower to write than a
|
* than an interlaced PNG can be up to 7 times slower to write than a
|
||||||
* non-interlaced image.
|
* non-interlaced image.
|
||||||
*
|
*
|
||||||
* There is no support for attaching ICC profiles to PNG images.
|
* If the VIPS header
|
||||||
|
* contains an ICC profile named VIPS_META_ICC_NAME ("icc-profile-data"), the
|
||||||
|
* profile from the VIPS header will be attached.
|
||||||
*
|
*
|
||||||
* The image is automatically converted to RGB, RGBA, Monochrome or Mono +
|
* The image is automatically converted to RGB, RGBA, Monochrome or Mono +
|
||||||
* alpha before saving. Images with more than one byte per band element are
|
* alpha before saving. Images with more than one byte per band element are
|
||||||
|
@ -128,6 +128,9 @@
|
|||||||
* 18/2/12
|
* 18/2/12
|
||||||
* - switch to sequential read
|
* - switch to sequential read
|
||||||
* - remove the lock ... tilecache does this for us
|
* - remove the lock ... tilecache does this for us
|
||||||
|
* 3/6/12
|
||||||
|
* - always offer THINSTRIP ... later stages can ask for something more
|
||||||
|
* relaxed if they wish
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1090,6 +1093,12 @@ parse_header( ReadTiff *rtiff, VipsImage *out )
|
|||||||
(VipsCallbackFn) vips_free, data_copy, data_length );
|
(VipsCallbackFn) vips_free, data_copy, data_length );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Offer the most restrictive style. This can be changed downstream if
|
||||||
|
* necessary.
|
||||||
|
*/
|
||||||
|
vips_demand_hint( out,
|
||||||
|
VIPS_DEMAND_STYLE_THINSTRIP, NULL );
|
||||||
|
|
||||||
return( 0 );
|
return( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1257,16 +1266,19 @@ read_tilewise( ReadTiff *rtiff, VipsImage *out )
|
|||||||
if( parse_header( rtiff, raw ) )
|
if( parse_header( rtiff, raw ) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
|
|
||||||
/* Process and save as VIPS.
|
/* Process and save as VIPS.
|
||||||
|
*
|
||||||
|
* Even though this is a tiled reader, we hint thinstrip since with
|
||||||
|
* the cache we are quite happy serving that if anything downstream
|
||||||
|
* would like it.
|
||||||
*/
|
*/
|
||||||
vips_demand_hint( raw,
|
vips_demand_hint( raw,
|
||||||
VIPS_DEMAND_STYLE_SMALLTILE, NULL );
|
VIPS_DEMAND_STYLE_THINSTRIP, NULL );
|
||||||
if( vips_image_generate( raw,
|
if( vips_image_generate( raw,
|
||||||
tiff_seq_start, tiff_fill_region, tiff_seq_stop,
|
tiff_seq_start, tiff_fill_region, tiff_seq_stop,
|
||||||
rtiff, NULL ) )
|
rtiff, NULL ) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
|
|
||||||
|
|
||||||
/* Copy to out, adding a cache. Enough tiles for two complete rows.
|
/* Copy to out, adding a cache. Enough tiles for two complete rows.
|
||||||
*/
|
*/
|
||||||
if( vips_tilecache( raw, &t,
|
if( vips_tilecache( raw, &t,
|
||||||
|
@ -58,6 +58,10 @@
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define DEBUG
|
||||||
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#endif /*HAVE_CONFIG_H*/
|
#endif /*HAVE_CONFIG_H*/
|
||||||
@ -244,6 +248,11 @@ shrink_gen( REGION *or, void *vseq, void *a, void *b )
|
|||||||
|
|
||||||
int x, y;
|
int x, y;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf( "shrink_gen: generating %d x %d at %d x %d\n",
|
||||||
|
r->width, r->height, r->left, r->top );
|
||||||
|
#endif /*DEBUG*/
|
||||||
|
|
||||||
for( y = 0; y < r->height; y += ystep )
|
for( y = 0; y < r->height; y += ystep )
|
||||||
for( x = 0; x < r->width; x += xstep ) {
|
for( x = 0; x < r->width; x += xstep ) {
|
||||||
/* Clip the this rect against the demand size.
|
/* Clip the this rect against the demand size.
|
||||||
@ -257,6 +266,10 @@ shrink_gen( REGION *or, void *vseq, void *a, void *b )
|
|||||||
s.top = (r->top + y) * st->yshrink;
|
s.top = (r->top + y) * st->yshrink;
|
||||||
s.width = 1 + ceil( width * st->xshrink );
|
s.width = 1 + ceil( width * st->xshrink );
|
||||||
s.height = 1 + ceil( height * st->yshrink );
|
s.height = 1 + ceil( height * st->yshrink );
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf( "shrink_gen: requesting %d x %d at %d x %d\n",
|
||||||
|
s.width, s.height, s.left, s.top );
|
||||||
|
#endif /*DEBUG*/
|
||||||
if( im_prepare( ir, &s ) )
|
if( im_prepare( ir, &s ) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user