remove 256 band limit from arithmetic.c
there was a fixed-size array in vips__bandup() see https://github.com/libvips/libvips/issues/1335
This commit is contained in:
parent
ad98222073
commit
37a3a6322c
@ -8,6 +8,7 @@
|
|||||||
magic number [przemyslawpluta]
|
magic number [przemyslawpluta]
|
||||||
- much faster ismagick() [jcupitt]
|
- much faster ismagick() [jcupitt]
|
||||||
- better behaviour for vips_region_fetch() if request lies partly ouside image
|
- better behaviour for vips_region_fetch() if request lies partly ouside image
|
||||||
|
- remove band limits [erdmann]
|
||||||
|
|
||||||
21/9/18 started 8.8.0
|
21/9/18 started 8.8.0
|
||||||
- much faster smartcrop [lovell]
|
- much faster smartcrop [lovell]
|
||||||
|
@ -369,8 +369,9 @@ vips__sizealike_vec( VipsImage **in, VipsImage **out, int n )
|
|||||||
int
|
int
|
||||||
vips__bandup( const char *domain, VipsImage *in, VipsImage **out, int n )
|
vips__bandup( const char *domain, VipsImage *in, VipsImage **out, int n )
|
||||||
{
|
{
|
||||||
VipsImage *bands[256];
|
VipsImage **bands;
|
||||||
int i;
|
int i;
|
||||||
|
int result;
|
||||||
|
|
||||||
if( in->Bands == n )
|
if( in->Bands == n )
|
||||||
return( vips_copy( in, out, NULL ) );
|
return( vips_copy( in, out, NULL ) );
|
||||||
@ -378,15 +379,20 @@ vips__bandup( const char *domain, VipsImage *in, VipsImage **out, int n )
|
|||||||
vips_error( domain, _( "not one band or %d bands" ), n );
|
vips_error( domain, _( "not one band or %d bands" ), n );
|
||||||
return( -1 );
|
return( -1 );
|
||||||
}
|
}
|
||||||
if( n > 256 || n < 1 ) {
|
if( n > VIPS_MAX_COORD ||
|
||||||
|
n < 1 ) {
|
||||||
vips_error( domain, "%s", _( "bad bands" ) );
|
vips_error( domain, "%s", _( "bad bands" ) );
|
||||||
return( -1 );
|
return( -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( !(bands = VIPS_ARRAY( NULL, n, VipsImage * )) )
|
||||||
|
return( -1 );
|
||||||
for( i = 0; i < n; i++ )
|
for( i = 0; i < n; i++ )
|
||||||
bands[i] = in;
|
bands[i] = in;
|
||||||
|
result = vips_bandjoin( bands, out, n, NULL );
|
||||||
|
VIPS_FREE( bands );
|
||||||
|
|
||||||
return( vips_bandjoin( bands, out, n, NULL ) );
|
return( result );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* base_bands is the default minimum.
|
/* base_bands is the default minimum.
|
||||||
|
Loading…
Reference in New Issue
Block a user