From: cristy Date: Tue, 2 Aug 2011 01:58:03 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~7244 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6710331f0558ed79a2448893f91d64ac737f4cfe;p=imagemagick --- diff --git a/MagickCore/resize.c b/MagickCore/resize.c index a6022ffd2..d0e84e2ec 100644 --- a/MagickCore/resize.c +++ b/MagickCore/resize.c @@ -2718,7 +2718,7 @@ MagickExport Image *SampleImage(const Image *image,const size_t columns, image_view=AcquireCacheView(image); sample_view=AcquireCacheView(sample_image); #if defined(MAGICKCORE_OPENMP_SUPPORT) - #pragma omp parallel for schedule(dynamic,4) shared(progress,status) + #pragma omp parallel for schedule(dynamic,4) shared(progress,status) omp_throttle(1) #endif for (y=0; y < (ssize_t) sample_image->rows; y++) { @@ -2752,21 +2752,27 @@ MagickExport Image *SampleImage(const Image *image,const size_t columns, */ for (x=0; x < (ssize_t) sample_image->columns; x++) { - SetPixelRed(sample_image,GetPixelRed(image,p+x_offset[x]* - GetPixelChannels(image)),q); - SetPixelGreen(sample_image,GetPixelGreen(image,p+x_offset[x]* - GetPixelChannels(image)),q); - SetPixelBlue(sample_image,GetPixelBlue(image,p+x_offset[x]* - GetPixelChannels(image)),q); - if (image->colorspace == CMYKColorspace) - SetPixelBlack(sample_image,GetPixelBlack(image,p+x_offset[x]* - GetPixelChannels(image)),q); - if (image->matte != MagickFalse) - SetPixelAlpha(sample_image,GetPixelAlpha(image,p+x_offset[x]* - GetPixelChannels(image)),q); - if (image->storage_class == PseudoClass) - SetPixelIndex(sample_image,GetPixelIndex(image,p+x_offset[x]* - GetPixelChannels(image)),q); + register ssize_t + i; + + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + { + PixelChannel + channel; + + PixelTrait + sample_traits, + traits; + + traits=GetPixelChannelMapTraits(image,(PixelChannel) i); + if (traits == UndefinedPixelTrait) + continue; + channel=GetPixelChannelMapChannel(image,(PixelChannel) i); + sample_traits=GetPixelChannelMapTraits(sample_image,channel); + if (sample_traits == UndefinedPixelTrait) + continue; + q[channel]=p[x_offset[x]*GetPixelChannels(image)+i]; + } q+=GetPixelChannels(sample_image); } if (SyncCacheViewAuthenticPixels(sample_view,exception) == MagickFalse) @@ -2837,25 +2843,33 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, next_row, proceed; - PixelInfo - pixel, - *scale_scanline, - *scanline, - *x_vector, - *y_vector, - zero; - MagickRealType - alpha; + alpha, + gamma; + + PixelChannel + channel; + + PixelTrait + scale_traits, + traits; PointInfo scale, span; + Quantum + pixel[MaxPixelChannels], + *scale_scanline, + *scanline, + *x_vector, + *y_vector; + register ssize_t i; ssize_t + n, number_rows, y; @@ -2884,20 +2898,18 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, /* Allocate memory. */ - x_vector=(PixelInfo *) AcquireQuantumMemory((size_t) image->columns, - sizeof(*x_vector)); + x_vector=(Quantum *) AcquireQuantumMemory((size_t) image->columns, + GetPixelChannels(image)*sizeof(*x_vector)); scanline=x_vector; if (image->rows != scale_image->rows) - scanline=(PixelInfo *) AcquireQuantumMemory((size_t) image->columns, - sizeof(*scanline)); - scale_scanline=(PixelInfo *) AcquireQuantumMemory((size_t) - scale_image->columns,sizeof(*scale_scanline)); - y_vector=(PixelInfo *) AcquireQuantumMemory((size_t) image->columns, - sizeof(*y_vector)); - if ((scanline == (PixelInfo *) NULL) || - (scale_scanline == (PixelInfo *) NULL) || - (x_vector == (PixelInfo *) NULL) || - (y_vector == (PixelInfo *) NULL)) + scanline=(Quantum *) AcquireQuantumMemory((size_t) image->columns, + GetPixelChannels(image)*sizeof(*scanline)); + scale_scanline=(Quantum *) AcquireQuantumMemory((size_t) + scale_image->columns,GetPixelChannels(image)*sizeof(*scale_scanline)); + y_vector=(Quantum *) AcquireQuantumMemory((size_t) image->columns, + GetPixelChannels(image)*sizeof(*y_vector)); + if ((scanline == (Quantum *) NULL) || (scale_scanline == (Quantum *) NULL) || + (x_vector == (Quantum *) NULL) || (y_vector == (Quantum *) NULL)) { scale_image=DestroyImage(scale_image); ThrowImageException(ResourceLimitError,"MemoryAllocationFailed"); @@ -2911,9 +2923,7 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, scale.y=(double) scale_image->rows/(double) image->rows; (void) ResetMagickMemory(y_vector,0,(size_t) image->columns* sizeof(*y_vector)); - GetPixelInfo(image,&pixel); - (void) ResetMagickMemory(&zero,0,sizeof(zero)); - i=0; + n=0; image_view=AcquireCacheView(image); scale_view=AcquireCacheView(scale_image); for (y=0; y < (ssize_t) scale_image->rows; y++) @@ -2921,13 +2931,11 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, register const Quantum *restrict p; - register PixelInfo + register Quantum + *restrict q, *restrict s, *restrict t; - register Quantum - *restrict q; - register ssize_t x; @@ -2935,27 +2943,28 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, exception); if (q == (const Quantum *) NULL) break; - alpha=1.0; if (scale_image->rows == image->rows) { /* Read a new scanline. */ - p=GetCacheViewVirtualPixels(image_view,0,i++,image->columns,1, + p=GetCacheViewVirtualPixels(image_view,0,n++,image->columns,1, exception); if (p == (const Quantum *) NULL) break; for (x=0; x < (ssize_t) image->columns; x++) { - if (image->matte != MagickFalse) - alpha=QuantumScale*GetPixelAlpha(image,p); - x_vector[x].red=(MagickRealType) (alpha*GetPixelRed(image,p)); - x_vector[x].green=(MagickRealType) (alpha*GetPixelGreen(image,p)); - x_vector[x].blue=(MagickRealType) (alpha*GetPixelBlue(image,p)); - if (image->matte != MagickFalse) - x_vector[x].alpha=(MagickRealType) GetPixelAlpha(image,p); - if (image->colorspace == CMYKColorspace) - x_vector[x].black=(MagickRealType) (alpha*GetPixelBlack(image,p)); + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + { + traits=GetPixelChannelMapTraits(image,(PixelChannel) i); + alpha=1.0; + if (((traits & BlendPixelTrait) != 0) && + (GetPixelAlphaTraits(image) != UndefinedPixelTrait) && + (image->matte != MagickFalse)) + alpha=QuantumScale*GetPixelAlpha(image,p+i* + GetPixelChannels(image)); + x_vector[x*GetPixelChannels(image)+i]=alpha*p[i]; + } p+=GetPixelChannels(image); } } @@ -2972,40 +2981,32 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, /* Read a new scanline. */ - p=GetCacheViewVirtualPixels(image_view,0,i++,image->columns,1, + p=GetCacheViewVirtualPixels(image_view,0,n++,image->columns,1, exception); if (p == (const Quantum *) NULL) break; for (x=0; x < (ssize_t) image->columns; x++) { - if (image->matte != MagickFalse) - alpha=QuantumScale* - GetPixelAlpha(image,p); - x_vector[x].red=(MagickRealType) (alpha* - GetPixelRed(image,p)); - x_vector[x].green=(MagickRealType) (alpha* - GetPixelGreen(image,p)); - x_vector[x].blue=(MagickRealType) (alpha* - GetPixelBlue(image,p)); - if (image->colorspace == CMYKColorspace) - x_vector[x].black=(MagickRealType) (alpha* - GetPixelBlack(image,p)); - if (image->matte != MagickFalse) - x_vector[x].alpha=(MagickRealType) - GetPixelAlpha(image,p); + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + { + traits=GetPixelChannelMapTraits(image,(PixelChannel) i); + alpha=1.0; + if (((traits & BlendPixelTrait) != 0) && + (GetPixelAlphaTraits(image) != UndefinedPixelTrait) && + (image->matte != MagickFalse)) + alpha=QuantumScale*GetPixelAlpha(image,p+i* + GetPixelChannels(image)); + x_vector[x*GetPixelChannels(image)+i]=alpha*p[i]; + } p+=GetPixelChannels(image); } number_rows++; } for (x=0; x < (ssize_t) image->columns; x++) { - y_vector[x].red+=scale.y*x_vector[x].red; - y_vector[x].green+=scale.y*x_vector[x].green; - y_vector[x].blue+=scale.y*x_vector[x].blue; - if (scale_image->colorspace == CMYKColorspace) - y_vector[x].black+=scale.y*x_vector[x].black; - if (scale_image->matte != MagickFalse) - y_vector[x].alpha+=scale.y*x_vector[x].alpha; + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + y_vector[x*GetPixelChannels(image)+i]+=scale.y* + x_vector[x*GetPixelChannels(image)+i]; } span.y-=scale.y; scale.y=(double) scale_image->rows/(double) image->rows; @@ -3016,22 +3017,23 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, /* Read a new scanline. */ - p=GetCacheViewVirtualPixels(image_view,0,i++,image->columns,1, + p=GetCacheViewVirtualPixels(image_view,0,n++,image->columns,1, exception); if (p == (const Quantum *) NULL) break; for (x=0; x < (ssize_t) image->columns; x++) { - if (image->matte != MagickFalse) - alpha=QuantumScale*GetPixelAlpha(image,p); - x_vector[x].red=(MagickRealType) (alpha*GetPixelRed(image,p)); - x_vector[x].green=(MagickRealType) (alpha*GetPixelGreen(image,p)); - x_vector[x].blue=(MagickRealType) (alpha*GetPixelBlue(image,p)); - if (image->colorspace == CMYKColorspace) - x_vector[x].black=(MagickRealType) (alpha* - GetPixelBlack(image,p)); - if (image->matte != MagickFalse) - x_vector[x].alpha=(MagickRealType) GetPixelAlpha(image,p); + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + { + traits=GetPixelChannelMapTraits(image,(PixelChannel) i); + alpha=1.0; + if (((traits & BlendPixelTrait) != 0) && + (GetPixelAlphaTraits(image) != UndefinedPixelTrait) && + (image->matte != MagickFalse)) + alpha=QuantumScale*GetPixelAlpha(image,p+i* + GetPixelChannels(image)); + x_vector[x*GetPixelChannels(image)+i]=alpha*p[i]; + } p+=GetPixelChannels(image); } number_rows++; @@ -3040,22 +3042,14 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, s=scanline; for (x=0; x < (ssize_t) image->columns; x++) { - pixel.red=y_vector[x].red+span.y*x_vector[x].red; - pixel.green=y_vector[x].green+span.y*x_vector[x].green; - pixel.blue=y_vector[x].blue+span.y*x_vector[x].blue; - if (image->colorspace == CMYKColorspace) - pixel.black=y_vector[x].black+span.y*x_vector[x].black; - if (image->matte != MagickFalse) - pixel.alpha=y_vector[x].alpha+span.y*x_vector[x].alpha; - s->red=pixel.red; - s->green=pixel.green; - s->blue=pixel.blue; - if (scale_image->colorspace == CMYKColorspace) - s->black=pixel.black; - if (scale_image->matte != MagickFalse) - s->alpha=pixel.alpha; - s++; - y_vector[x]=zero; + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + { + pixel[i]=y_vector[x*GetPixelChannels(image)+i]+span.y* + x_vector[x*GetPixelChannels(image)+i]; + y_vector[x*GetPixelChannels(image)+i]=0.0; + s[i]=pixel[i]; + } + s+=GetPixelChannels(image); } scale.y-=span.y; if (scale.y <= 0) @@ -3073,18 +3067,19 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, s=scanline; for (x=0; x < (ssize_t) scale_image->columns; x++) { - if (scale_image->matte != MagickFalse) - alpha=QuantumScale*s->alpha; - alpha=1.0/(fabs(alpha) <= MagickEpsilon ? 1.0 : alpha); - SetPixelRed(scale_image,ClampToQuantum(alpha*s->red),q); - SetPixelGreen(scale_image,ClampToQuantum(alpha*s->green),q); - SetPixelBlue(scale_image,ClampToQuantum(alpha*s->blue),q); - if (scale_image->colorspace == CMYKColorspace) - SetPixelBlack(scale_image,ClampToQuantum(alpha*s->black),q); - if (scale_image->matte != MagickFalse) - SetPixelAlpha(scale_image,ClampToQuantum(s->alpha),q); + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + { + traits=GetPixelChannelMapTraits(image,(PixelChannel) i); + if (traits == UndefinedPixelTrait) + continue; + channel=GetPixelChannelMapChannel(image,(PixelChannel) i); + scale_traits=GetPixelChannelMapTraits(scale_image,channel); + if (scale_traits == UndefinedPixelTrait) + continue; + q[channel]=ClampToQuantum(s[i]); + } q+=GetPixelChannels(scale_image); - s++; + s+=GetPixelChannels(image); } } else @@ -3092,7 +3087,8 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, /* Scale X direction. */ - pixel=zero; + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + pixel[i]=0.0; next_column=MagickFalse; span.x=1.0; s=scanline; @@ -3104,23 +3100,15 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, { if (next_column != MagickFalse) { - pixel=zero; - t++; + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + pixel[i]=0.0; + t+=GetPixelChannels(scale_image); } - pixel.red+=span.x*s->red; - pixel.green+=span.x*s->green; - pixel.blue+=span.x*s->blue; - if (scale_image->colorspace == CMYKColorspace) - pixel.black+=span.x*s->black; - if (image->matte != MagickFalse) - pixel.alpha+=span.x*s->alpha; - t->red=pixel.red; - t->green=pixel.green; - t->blue=pixel.blue; - if (scale_image->colorspace == CMYKColorspace) - t->black=pixel.black; - if (scale_image->matte != MagickFalse) - t->alpha=pixel.alpha; + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + { + pixel[i]+=span.x*s[i]; + t[i]=pixel[i]; + } scale.x-=span.x; span.x=1.0; next_column=MagickTrue; @@ -3129,61 +3117,49 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, { if (next_column != MagickFalse) { - pixel=zero; + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + pixel[i]=0.0; next_column=MagickFalse; - t++; + t+=GetPixelChannels(scale_image); } - pixel.red+=scale.x*s->red; - pixel.green+=scale.x*s->green; - pixel.blue+=scale.x*s->blue; - if (scale_image->colorspace == CMYKColorspace) - pixel.black+=scale.x*s->black; - if (scale_image->matte != MagickFalse) - pixel.alpha+=scale.x*s->alpha; + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + pixel[i]+=scale.x*s[i]; span.x-=scale.x; } - s++; + s+=GetPixelChannels(image); } if (span.x > 0) { - s--; - pixel.red+=span.x*s->red; - pixel.green+=span.x*s->green; - pixel.blue+=span.x*s->blue; - if (scale_image->colorspace == CMYKColorspace) - pixel.black+=span.x*s->black; - if (scale_image->matte != MagickFalse) - pixel.alpha+=span.x*s->alpha; + s-=GetPixelChannels(image); + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + pixel[i]+=span.x*s[i]; } if ((next_column == MagickFalse) && ((ssize_t) (t-scale_scanline) < (ssize_t) scale_image->columns)) { - t->red=pixel.red; - t->green=pixel.green; - t->blue=pixel.blue; - if (scale_image->colorspace == CMYKColorspace) - t->black=pixel.black; - if (scale_image->matte != MagickFalse) - t->alpha=pixel.alpha; + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + t[i]=pixel[i]; } /* Transfer scanline to scaled image. */ + s=scanline; t=scale_scanline; for (x=0; x < (ssize_t) scale_image->columns; x++) { - if (scale_image->matte != MagickFalse) - alpha=QuantumScale*s->alpha; - alpha=1.0/(fabs(alpha) <= MagickEpsilon ? 1.0 : alpha); - SetPixelRed(scale_image,ClampToQuantum(alpha*t->red),q); - SetPixelGreen(scale_image,ClampToQuantum(alpha*t->green),q); - SetPixelBlue(scale_image,ClampToQuantum(alpha*t->blue),q); - if (scale_image->colorspace == CMYKColorspace) - SetPixelBlack(scale_image,ClampToQuantum(alpha*t->black),q); - if (scale_image->matte != MagickFalse) - SetPixelAlpha(scale_image,ClampToQuantum(t->alpha),q); - t++; + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + { + traits=GetPixelChannelMapTraits(image,(PixelChannel) i); + if (traits == UndefinedPixelTrait) + continue; + channel=GetPixelChannelMapChannel(image,(PixelChannel) i); + scale_traits=GetPixelChannelMapTraits(scale_image,channel); + if (scale_traits == UndefinedPixelTrait) + continue; + q[channel]=ClampToQuantum(t[i]); + } q+=GetPixelChannels(scale_image); + t+=GetPixelChannels(scale_image); } } if (SyncCacheViewAuthenticPixels(scale_view,exception) == MagickFalse) @@ -3198,11 +3174,11 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, /* Free allocated memory. */ - y_vector=(PixelInfo *) RelinquishMagickMemory(y_vector); - scale_scanline=(PixelInfo *) RelinquishMagickMemory(scale_scanline); + y_vector=(Quantum *) RelinquishMagickMemory(y_vector); + scale_scanline=(Quantum *) RelinquishMagickMemory(scale_scanline); if (scale_image->rows != image->rows) - scanline=(PixelInfo *) RelinquishMagickMemory(scanline); - x_vector=(PixelInfo *) RelinquishMagickMemory(x_vector); + scanline=(Quantum *) RelinquishMagickMemory(scanline); + x_vector=(Quantum *) RelinquishMagickMemory(x_vector); scale_image->type=image->type; return(scale_image); } diff --git a/index.html b/index.html index 85478b14e..08f77b78d 100644 --- a/index.html +++ b/index.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/ImageMagickObject.html b/www/ImageMagickObject.html index e52378bd2..b3682a280 100644 --- a/www/ImageMagickObject.html +++ b/www/ImageMagickObject.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/advanced-unix-installation.html b/www/advanced-unix-installation.html index c1165d112..1790b0ca1 100644 --- a/www/advanced-unix-installation.html +++ b/www/advanced-unix-installation.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/animate.html b/www/animate.html index b66cf4004..014883ea7 100644 --- a/www/animate.html +++ b/www/animate.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/api.html b/www/api.html index f005568a8..2eb6e45c5 100644 --- a/www/api.html +++ b/www/api.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/animate.html b/www/api/animate.html index 604317f86..8caff8d99 100644 --- a/www/api/animate.html +++ b/www/api/animate.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/attribute.html b/www/api/attribute.html index 1042763d4..6cf3ff532 100644 --- a/www/api/attribute.html +++ b/www/api/attribute.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/blob.html b/www/api/blob.html index 7b77bed05..dd6c5fa03 100644 --- a/www/api/blob.html +++ b/www/api/blob.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/cache.html b/www/api/cache.html index b34af04ae..d8b9eed34 100644 --- a/www/api/cache.html +++ b/www/api/cache.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/cipher.html b/www/api/cipher.html index 9c4b91ec7..8abe350a9 100644 --- a/www/api/cipher.html +++ b/www/api/cipher.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/color.html b/www/api/color.html index 3b28156ef..e0b7016c9 100644 --- a/www/api/color.html +++ b/www/api/color.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/colormap.html b/www/api/colormap.html index 433a5c352..e2bf12fd6 100644 --- a/www/api/colormap.html +++ b/www/api/colormap.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/compare.html b/www/api/compare.html index a241767fc..ae3cee551 100644 --- a/www/api/compare.html +++ b/www/api/compare.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/composite.html b/www/api/composite.html index 9d1b06d5c..1e7f3bfd5 100644 --- a/www/api/composite.html +++ b/www/api/composite.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/decorate.html b/www/api/decorate.html index 8e3d82bc0..5ea69b9f0 100644 --- a/www/api/decorate.html +++ b/www/api/decorate.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/deprecate.html b/www/api/deprecate.html index f95dce42a..e1afa5436 100644 --- a/www/api/deprecate.html +++ b/www/api/deprecate.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/distort.html b/www/api/distort.html index f1bdab360..b1782d5c6 100644 --- a/www/api/distort.html +++ b/www/api/distort.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/draw.html b/www/api/draw.html index 6ebc25a70..73d509303 100644 --- a/www/api/draw.html +++ b/www/api/draw.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/drawing-wand.html b/www/api/drawing-wand.html index c6737068d..60efa481b 100644 --- a/www/api/drawing-wand.html +++ b/www/api/drawing-wand.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/effect.html b/www/api/effect.html index abfd13e93..f59a7df10 100644 --- a/www/api/effect.html +++ b/www/api/effect.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/enhance.html b/www/api/enhance.html index bcc4409a2..c8d35eee6 100644 --- a/www/api/enhance.html +++ b/www/api/enhance.html @@ -200,7 +200,7 @@ Web Hosting Ratings @@ -213,7 +213,7 @@

Module enhance Methods

- +

AutoGammaImage

@@ -249,10 +249,10 @@

The image to auto-level

-

Use BrightnessContrastImage

+

BrightnessContrastImage

-

Use BrightnessContrastImage() to change the brightness and/or contrast of an image. It converts the brightness and contrast parameters into slope and intercept and calls a polynomical function to apply to the image.

+

BrightnessContrastImage() changes the brightness and/or contrast of an image. It converts the brightness and contrast parameters into slope and intercept and calls a polynomical function to apply to the image.

The format of the BrightnessContrastImage method is:

@@ -359,10 +359,10 @@

Increase or decrease image contrast.

-

The ContrastStretchImage

+

ContrastStretchImage

-

The ContrastStretchImage() is a simple image enhancement technique that attempts to improve the contrast in an image by `stretching' the range of intensity values it contains to span a desired range of values. It differs from the more sophisticated histogram equalization in that it can only apply a linear scaling function to the image pixel values. As a result the `enhancement' is less harsh.

+

ContrastStretchImage() is a simple image enhancement technique that attempts to improve the contrast in an image by `stretching' the range of intensity values it contains to span a desired range of values. It differs from the more sophisticated histogram equalization in that it can only apply a linear scaling function to the image pixel values. As a result the `enhancement' is less harsh.

The format of the ContrastStretchImage method is:

@@ -559,10 +559,10 @@

if true map the colors (levelize), rather than from (level)

-

The LinearStretchImage

+

LinearStretchImage

-

The LinearStretchImage() discards any pixels below the black point and above the white point and levels the remaining pixels.

+

LinearStretchImage() discards any pixels below the black point and above the white point and levels the remaining pixels.

The format of the LinearStretchImage method is:

diff --git a/www/api/exception.html b/www/api/exception.html index 7e7f26e42..eb6bdd6e1 100644 --- a/www/api/exception.html +++ b/www/api/exception.html @@ -200,7 +200,7 @@ Web Hosting Ratings
diff --git a/www/api/feature.html b/www/api/feature.html index 7b660ec50..4803634b6 100644 --- a/www/api/feature.html +++ b/www/api/feature.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/fourier.html b/www/api/fourier.html index aa20efeee..86bc6226c 100644 --- a/www/api/fourier.html +++ b/www/api/fourier.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/fx.html b/www/api/fx.html index 57b069cee..c57ba44ee 100644 --- a/www/api/fx.html +++ b/www/api/fx.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/histogram.html b/www/api/histogram.html index 9cfd26dad..4e1dbdf63 100644 --- a/www/api/histogram.html +++ b/www/api/histogram.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/image-view.html b/www/api/image-view.html index 5024ee113..2a0d1a15e 100644 --- a/www/api/image-view.html +++ b/www/api/image-view.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/image.html b/www/api/image.html index 2c814ca26..d72ff8606 100644 --- a/www/api/image.html +++ b/www/api/image.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/list.html b/www/api/list.html index 7223d8598..293ae205b 100644 --- a/www/api/list.html +++ b/www/api/list.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/magick-image.html b/www/api/magick-image.html index 373bbdaa0..0b5a7d6eb 100644 --- a/www/api/magick-image.html +++ b/www/api/magick-image.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/magick-property.html b/www/api/magick-property.html index 08fc5d312..aa4268095 100644 --- a/www/api/magick-property.html +++ b/www/api/magick-property.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/magick-wand.html b/www/api/magick-wand.html index 3275a9bef..4f8cddd8c 100644 --- a/www/api/magick-wand.html +++ b/www/api/magick-wand.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/magick.html b/www/api/magick.html index 9a321298c..f32bc7f4a 100644 --- a/www/api/magick.html +++ b/www/api/magick.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/memory.html b/www/api/memory.html index 4a0470b90..c811553b5 100644 --- a/www/api/memory.html +++ b/www/api/memory.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/module.html b/www/api/module.html index 58f79f569..b8b09ff2a 100644 --- a/www/api/module.html +++ b/www/api/module.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/monitor.html b/www/api/monitor.html index 084e6339a..006455012 100644 --- a/www/api/monitor.html +++ b/www/api/monitor.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/montage.html b/www/api/montage.html index 416f0ce25..a90fbd5e8 100644 --- a/www/api/montage.html +++ b/www/api/montage.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/morphology.html b/www/api/morphology.html index 79a2dd300..1bc58d11a 100644 --- a/www/api/morphology.html +++ b/www/api/morphology.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/paint.html b/www/api/paint.html index ccb132554..05a049cbd 100644 --- a/www/api/paint.html +++ b/www/api/paint.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/profile.html b/www/api/profile.html index f4e50624a..ab95c59e9 100644 --- a/www/api/profile.html +++ b/www/api/profile.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/property.html b/www/api/property.html index 0c9763542..43463f227 100644 --- a/www/api/property.html +++ b/www/api/property.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/registry.html b/www/api/registry.html index 10c2133ca..7ed63e620 100644 --- a/www/api/registry.html +++ b/www/api/registry.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/resize.html b/www/api/resize.html index 058847d0a..33e7b7fad 100644 --- a/www/api/resize.html +++ b/www/api/resize.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/resource.html b/www/api/resource.html index 37a6229e8..68d1ed9ff 100644 --- a/www/api/resource.html +++ b/www/api/resource.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/segment.html b/www/api/segment.html index 985345f56..17699ca92 100644 --- a/www/api/segment.html +++ b/www/api/segment.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/shear.html b/www/api/shear.html index 0c4258c59..7bd6a43bb 100644 --- a/www/api/shear.html +++ b/www/api/shear.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/signature.html b/www/api/signature.html index 137796612..5b861bf7b 100644 --- a/www/api/signature.html +++ b/www/api/signature.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/statistic.html b/www/api/statistic.html index 4bcf3087a..4ed2412f5 100644 --- a/www/api/statistic.html +++ b/www/api/statistic.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/transform.html b/www/api/transform.html index f352e9acf..df16220d3 100644 --- a/www/api/transform.html +++ b/www/api/transform.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/version.html b/www/api/version.html index 25bc21b35..683871440 100644 --- a/www/api/version.html +++ b/www/api/version.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/wand-view.html b/www/api/wand-view.html index eb8ff6260..d47cc29db 100644 --- a/www/api/wand-view.html +++ b/www/api/wand-view.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/binary-releases.html b/www/binary-releases.html index 8bc5d5442..8ab32bc1a 100644 --- a/www/binary-releases.html +++ b/www/binary-releases.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/changelog.html b/www/changelog.html index 94fdb1dba..5d772c6e5 100644 --- a/www/changelog.html +++ b/www/changelog.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/cipher.html b/www/cipher.html index 03436d1ba..3c3c04367 100644 --- a/www/cipher.html +++ b/www/cipher.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/color.html b/www/color.html index 84561dc9f..d9b878db9 100644 --- a/www/color.html +++ b/www/color.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/command-line-options.html b/www/command-line-options.html index 00d478f79..6432a3846 100644 --- a/www/command-line-options.html +++ b/www/command-line-options.html @@ -204,7 +204,7 @@ Web Hosting Ratings diff --git a/www/command-line-processing.html b/www/command-line-processing.html index 049fcc224..151875cb3 100644 --- a/www/command-line-processing.html +++ b/www/command-line-processing.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/command-line-tools.html b/www/command-line-tools.html index dafd8fd20..34c29ab2e 100644 --- a/www/command-line-tools.html +++ b/www/command-line-tools.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/compare.html b/www/compare.html index 59b913631..e470eea42 100644 --- a/www/compare.html +++ b/www/compare.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/compose.html b/www/compose.html index 3d5eedae4..4103d097d 100644 --- a/www/compose.html +++ b/www/compose.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/conjure.html b/www/conjure.html index a7e05ea16..182bf9ca4 100644 --- a/www/conjure.html +++ b/www/conjure.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/contact.html b/www/contact.html index 8fd636184..c0d4c2fcd 100644 --- a/www/contact.html +++ b/www/contact.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/convert.html b/www/convert.html index ad2bfbe75..70e1a152e 100644 --- a/www/convert.html +++ b/www/convert.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/display.html b/www/display.html index 0ac2278b9..3e59aeafe 100644 --- a/www/display.html +++ b/www/display.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/escape.html b/www/escape.html index d5d8fabf8..4fe397e9a 100644 --- a/www/escape.html +++ b/www/escape.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/examples.html b/www/examples.html index 368fa9447..611f6fb24 100644 --- a/www/examples.html +++ b/www/examples.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/export.html b/www/export.html index 3f9cf18d7..f37b638e7 100644 --- a/www/export.html +++ b/www/export.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/formats.html b/www/formats.html index 488b05f04..fe17c6925 100644 --- a/www/formats.html +++ b/www/formats.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/fx.html b/www/fx.html index 289dcb453..aefab881c 100644 --- a/www/fx.html +++ b/www/fx.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/high-dynamic-range.html b/www/high-dynamic-range.html index 5963d66fa..64debc5fe 100644 --- a/www/high-dynamic-range.html +++ b/www/high-dynamic-range.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/import.html b/www/import.html index 26f8c8dd8..4996f7b0e 100644 --- a/www/import.html +++ b/www/import.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/index.html b/www/index.html index 36e063882..9d564dabf 100644 --- a/www/index.html +++ b/www/index.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/install-source.html b/www/install-source.html index 14577997c..f5ab1bfaa 100644 --- a/www/install-source.html +++ b/www/install-source.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/jp2.html b/www/jp2.html index 68419da81..eceaf2992 100644 --- a/www/jp2.html +++ b/www/jp2.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/license.html b/www/license.html index 0d463fdf4..059b963e2 100644 --- a/www/license.html +++ b/www/license.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/links.html b/www/links.html index 9fbb7fecd..8b4a6f268 100644 --- a/www/links.html +++ b/www/links.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/magick++.html b/www/magick++.html index e8a335ac1..1e5345744 100644 --- a/www/magick++.html +++ b/www/magick++.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/magick-core.html b/www/magick-core.html index 0be9eed99..fec21cc43 100644 --- a/www/magick-core.html +++ b/www/magick-core.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/magick-wand.html b/www/magick-wand.html index fcadd187b..0f8556add 100644 --- a/www/magick-wand.html +++ b/www/magick-wand.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/miff.html b/www/miff.html index c380624ce..8c0662e09 100644 --- a/www/miff.html +++ b/www/miff.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/mogrify.html b/www/mogrify.html index 6df17bdd8..a890d05c1 100644 --- a/www/mogrify.html +++ b/www/mogrify.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/montage.html b/www/montage.html index 31806f623..8ac0e752e 100644 --- a/www/montage.html +++ b/www/montage.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/motion-picture.html b/www/motion-picture.html index 852183424..e301ef4bf 100644 --- a/www/motion-picture.html +++ b/www/motion-picture.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/perl-magick.html b/www/perl-magick.html index eeb1a37bd..9ce12d3dc 100644 --- a/www/perl-magick.html +++ b/www/perl-magick.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/porting.html b/www/porting.html index 7167648ac..83847103f 100644 --- a/www/porting.html +++ b/www/porting.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/quantize.html b/www/quantize.html index bda8c08bd..15a8c21e6 100644 --- a/www/quantize.html +++ b/www/quantize.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/resources.html b/www/resources.html index 7e26237d5..829009e8e 100644 --- a/www/resources.html +++ b/www/resources.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/search.html b/www/search.html index 0d864864d..b5027608b 100644 --- a/www/search.html +++ b/www/search.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/sitemap.html b/www/sitemap.html index a0895f878..8416d0ff5 100644 --- a/www/sitemap.html +++ b/www/sitemap.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/sponsors.html b/www/sponsors.html index 5e39d70d4..1dfc21c48 100644 --- a/www/sponsors.html +++ b/www/sponsors.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/stream.html b/www/stream.html index 0f0323f50..3ce913fe0 100644 --- a/www/stream.html +++ b/www/stream.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/subversion.html b/www/subversion.html index d542cce89..0ae3bb849 100644 --- a/www/subversion.html +++ b/www/subversion.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/t-shirt.html b/www/t-shirt.html index 58e2886c6..565500852 100644 --- a/www/t-shirt.html +++ b/www/t-shirt.html @@ -200,7 +200,7 @@ Web Hosting Ratings