From: cristy Date: Thu, 4 Aug 2011 01:35:11 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~7235 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=222b19c8e5e5ee5287e41d33fea54f2b651741b6;p=imagemagick --- diff --git a/MagickCore/cache-private.h b/MagickCore/cache-private.h index 5a2ff6254..e76cd6688 100644 --- a/MagickCore/cache-private.h +++ b/MagickCore/cache-private.h @@ -1,12 +1,12 @@ /* Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization dedicated to making software imaging solutions freely available. - + You may not use this file except in compliance with the License. obtain a copy of the License at - + http://www.imagemagick.org/script/license.php - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -118,6 +118,13 @@ typedef struct _CacheInfo ColorspaceType colorspace; + MagickBooleanType + matte; + + size_t + columns, + rows; + size_t metacontent_extent, number_channels; @@ -131,10 +138,6 @@ typedef struct _CacheInfo MagickBooleanType mapped; - size_t - columns, - rows; - MagickOffsetType offset; diff --git a/MagickCore/cache.c b/MagickCore/cache.c index 90cd4e88c..0a6ba8164 100644 --- a/MagickCore/cache.c +++ b/MagickCore/cache.c @@ -1970,6 +1970,7 @@ static inline MagickBooleanType ValidatePixelCacheMorphology(const Image *image) cache_info=(CacheInfo *) image->cache; if ((image->storage_class != cache_info->storage_class) || (image->colorspace != cache_info->colorspace) || + (image->matte != cache_info->matte) || (image->columns != cache_info->columns) || (image->rows != cache_info->rows) || (image->number_channels != cache_info->number_channels) || @@ -4003,11 +4004,12 @@ static MagickBooleanType OpenPixelCache(Image *image,const MapMode mode, image->filename,(double) GetImageIndexInList(image)); cache_info->storage_class=image->storage_class; cache_info->colorspace=image->colorspace; - cache_info->mode=mode; + cache_info->matte=image->matte; cache_info->rows=image->rows; cache_info->columns=image->columns; cache_info->number_channels=GetPixelChannels(image); cache_info->metacontent_extent=image->metacontent_extent; + cache_info->mode=mode; if (image->ping != MagickFalse) { cache_info->type=PingCache; diff --git a/MagickCore/effect.c b/MagickCore/effect.c index b9f296df8..ab794b4f4 100644 --- a/MagickCore/effect.c +++ b/MagickCore/effect.c @@ -1362,9 +1362,7 @@ MagickExport Image *ConvolveImage(const Image *image, k=kernel_info->values; pixels=p; pixel=kernel_info->bias; - if (((convolve_traits & BlendPixelTrait) == 0) || - (GetPixelAlphaTraits(image) == UndefinedPixelTrait) || - (image->matte == MagickFalse)) + if ((convolve_traits & BlendPixelTrait) == 0) { /* No alpha blending. diff --git a/MagickCore/magick-config.h b/MagickCore/magick-config.h index f21ee5d27..500da0bb6 100644 --- a/MagickCore/magick-config.h +++ b/MagickCore/magick-config.h @@ -12,7 +12,9 @@ /* #undef AUTOTRACE_DELEGATE */ /* Define if coders and filters are to be built as modules. */ -/* #undef BUILD_MODULES */ +#ifndef MAGICKCORE_BUILD_MODULES +#define MAGICKCORE_BUILD_MODULES 1 +#endif /* Define if you have the bzip2 library */ #ifndef MAGICKCORE_BZLIB_DELEGATE @@ -78,7 +80,9 @@ #endif /* Define if you have FFTW library */ -/* #undef FFTW_DELEGATE */ +#ifndef MAGICKCORE_FFTW_DELEGATE +#define MAGICKCORE_FFTW_DELEGATE 1 +#endif /* Location of filter modules */ #ifndef MAGICKCORE_FILTER_PATH @@ -432,15 +436,15 @@ #endif /* Define if you have the header file. */ -#ifndef MAGICKCORE_HAVE_LCMS2_H -#define MAGICKCORE_HAVE_LCMS2_H 1 -#endif +/* #undef HAVE_LCMS2_H */ /* Define if you have the header file. */ /* #undef HAVE_LCMS2_LCMS2_H */ /* Define if you have the header file. */ -/* #undef HAVE_LCMS_H */ +#ifndef MAGICKCORE_HAVE_LCMS_H +#define MAGICKCORE_HAVE_LCMS_H 1 +#endif /* Define if you have the header file. */ /* #undef HAVE_LCMS_LCMS_H */ @@ -1163,7 +1167,9 @@ #endif /* Define if you have JBIG library */ -/* #undef JBIG_DELEGATE */ +#ifndef MAGICKCORE_JBIG_DELEGATE +#define MAGICKCORE_JBIG_DELEGATE 1 +#endif /* Define if you have JPEG version 2 "Jasper" library */ #ifndef MAGICKCORE_JP2_DELEGATE @@ -1192,7 +1198,9 @@ #endif /* Define if you have LQR library */ -/* #undef LQR_DELEGATE */ +#ifndef MAGICKCORE_LQR_DELEGATE +#define MAGICKCORE_LQR_DELEGATE 1 +#endif /* Define if using libltdl to support dynamically loadable modules */ #ifndef MAGICKCORE_LTDL_DELEGATE @@ -1204,7 +1212,7 @@ /* Define to the system default library search path. */ #ifndef MAGICKCORE_LT_DLSEARCH_PATH -#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib64/atlas:/usr/lib64/mysql:/usr/lib64/qt-3.3/lib:/usr/lib64/tcl8.5/tclx8.4:/usr/lib64/tcl8.5:/usr/lib/wine/:/usr/lib64/wine/:/usr/lib64/xulrunner-2" +#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib64/R/lib:/usr/lib64/atlas:/opt/modules/pkg/intel/f77/10.0.025/lib:/usr/local/lib:/usr/lib64/mysql:/usr/lib64/qt-3.3/lib:/usr/lib64/xulrunner-2" #endif /* The archive extension */ @@ -1255,7 +1263,9 @@ /* #undef NO_MINUS_C_MINUS_O */ /* Define if you have OPENEXR library */ -/* #undef OPENEXR_DELEGATE */ +#ifndef MAGICKCORE_OPENEXR_DELEGATE +#define MAGICKCORE_OPENEXR_DELEGATE 1 +#endif /* Define to the address where bug reports for this package should be sent. */ #ifndef MAGICKCORE_PACKAGE_BUGREPORT @@ -1310,7 +1320,9 @@ #endif /* Define if you have RSVG library */ -/* #undef RSVG_DELEGATE */ +#ifndef MAGICKCORE_RSVG_DELEGATE +#define MAGICKCORE_RSVG_DELEGATE 1 +#endif /* Define to the type of arg 1 for `select'. */ #ifndef MAGICKCORE_SELECT_TYPE_ARG1 @@ -1447,7 +1459,9 @@ /* Define if you have WEBP library */ -/* #undef WEBP_DELEGATE */ +#ifndef MAGICKCORE_WEBP_DELEGATE +#define MAGICKCORE_WEBP_DELEGATE 1 +#endif /* Define to use the Windows GDI32 library */ /* #undef WINGDI32_DELEGATE */ @@ -1456,7 +1470,9 @@ /* #undef WITH_DMALLOC */ /* Define if you have WMF library */ -/* #undef WMF_DELEGATE */ +#ifndef MAGICKCORE_WMF_DELEGATE +#define MAGICKCORE_WMF_DELEGATE 1 +#endif /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ diff --git a/MagickCore/pixel-accessor.h b/MagickCore/pixel-accessor.h index 5d6e62c18..fee52f4d9 100644 --- a/MagickCore/pixel-accessor.h +++ b/MagickCore/pixel-accessor.h @@ -476,7 +476,7 @@ static inline void SetPixelChannel(const Image *image, pixel[image->channel_map[image->map][channel].channel]=quantum; } -static inline void SetPixelChannelMapComponent(const Image *image, +static inline void SetPixelChannelMapChannel(const Image *image, const PixelChannel channel,const PixelChannel channels) { image->channel_map[image->map][channel].channel=channels; diff --git a/MagickCore/pixel.c b/MagickCore/pixel.c index 304a5dd6b..41d0c7d8f 100644 --- a/MagickCore/pixel.c +++ b/MagickCore/pixel.c @@ -3685,9 +3685,7 @@ MagickExport MagickBooleanType InterpolatePixelChannel(const Image *image, status=MagickFalse; break; } - if (((traits & BlendPixelTrait) == 0) || - (GetPixelAlphaTraits(image) == UndefinedPixelTrait) || - (image->matte == MagickFalse)) + if ((traits & BlendPixelTrait) == 0) for (i=0; i < 16; i++) { alpha[i]=1.0; @@ -3723,9 +3721,7 @@ MagickExport MagickBooleanType InterpolatePixelChannel(const Image *image, status=MagickFalse; break; } - if (((traits & BlendPixelTrait) == 0) || - (GetPixelAlphaTraits(image) == UndefinedPixelTrait) || - (image->matte == MagickFalse)) + if ((traits & BlendPixelTrait) == 0) for (i=0; i < 16; i++) { alpha[i]=1.0; @@ -3770,9 +3766,7 @@ MagickExport MagickBooleanType InterpolatePixelChannel(const Image *image, status=MagickFalse; break; } - if (((traits & BlendPixelTrait) == 0) || - (GetPixelAlphaTraits(image) == UndefinedPixelTrait) || - (image->matte == MagickFalse)) + if ((traits & BlendPixelTrait) == 0) for (i=0; i < 4; i++) { alpha[i]=1.0; @@ -3868,9 +3862,7 @@ MagickExport MagickBooleanType InterpolatePixelChannel(const Image *image, status=MagickFalse; break; } - if (((traits & BlendPixelTrait) == 0) || - (GetPixelAlphaTraits(image) == UndefinedPixelTrait) || - (image->matte == MagickFalse)) + if ((traits & BlendPixelTrait) == 0) for (i=0; i < 4; i++) { alpha[i]=1.0; @@ -3967,9 +3959,7 @@ MagickExport MagickBooleanType InterpolatePixelChannel(const Image *image, status=MagickFalse; break; } - if (((traits & BlendPixelTrait) == 0) || - (GetPixelAlphaTraits(image) == UndefinedPixelTrait) || - (image->matte == MagickFalse)) + if ((traits & BlendPixelTrait) == 0) for (i=0; i < 16; i++) { alpha[i]=1.0; @@ -4976,40 +4966,42 @@ MagickExport void SetPixelChannelMap(Image *image, */ MagickExport void StandardPixelChannelMap(Image *image) { + PixelChannel + alpha_channel; + register ssize_t i; - for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + for (i=0; i < (ssize_t) MaxPixelChannels; i++) + { + SetPixelChannelMapChannel(image,(PixelChannel) i,(PixelChannel) i); SetPixelChannelMapTraits(image,(PixelChannel) i,UndefinedPixelTrait); + } image->number_channels=4; - SetPixelChannelMapComponent(image,RedPixelChannel,RedPixelChannel); - SetPixelChannelMapTraits(image,RedPixelChannel,(PixelTrait) - (UpdatePixelTrait | BlendPixelTrait)); - SetPixelChannelMapComponent(image,GreenPixelChannel,GreenPixelChannel); - SetPixelChannelMapTraits(image,GreenPixelChannel,(PixelTrait) - (UpdatePixelTrait | BlendPixelTrait)); - SetPixelChannelMapComponent(image,BluePixelChannel,BluePixelChannel); - SetPixelChannelMapTraits(image,BluePixelChannel,(PixelTrait) - (UpdatePixelTrait | BlendPixelTrait)); - SetPixelChannelMapComponent(image,AlphaPixelChannel,AlphaPixelChannel); - SetPixelChannelMapTraits(image,AlphaPixelChannel,UpdatePixelTrait); if (0 && image->colorspace == GRAYColorspace) - { - image->number_channels=2; - SetPixelChannelMapComponent(image,GreenPixelChannel,RedPixelChannel); - SetPixelChannelMapComponent(image,BluePixelChannel,RedPixelChannel); - } + image->number_channels=2; if (image->colorspace == CMYKColorspace) + image->number_channels++; + if (image->storage_class == PseudoClass) + image->number_channels++; + for (i=0; i < (ssize_t) image->number_channels; i++) + SetPixelChannelMapTraits(image,(PixelChannel) i,(PixelTrait) + UpdatePixelTrait); + alpha_channel=GetPixelChannelMapChannel(image,AlphaPixelChannel); + if (image->matte != MagickFalse) + for (i=0; i < (ssize_t) image->number_channels; i++) + if ((PixelChannel) i != alpha_channel) + SetPixelChannelMapTraits(image,(PixelChannel) i,(PixelTrait) + (UpdatePixelTrait | BlendPixelTrait)); + if (0 && image->colorspace == GRAYColorspace) { - image->number_channels++; - SetPixelChannelMapComponent(image,BlackPixelChannel,BlackPixelChannel); - SetPixelChannelMapTraits(image,BlackPixelChannel,(PixelTrait) - (UpdatePixelTrait | BlendPixelTrait)); + image->number_channels=2; + SetPixelChannelMapChannel(image,GreenPixelChannel,RedPixelChannel); + SetPixelChannelMapChannel(image,BluePixelChannel,RedPixelChannel); } if (image->storage_class == PseudoClass) { - image->number_channels++; - SetPixelChannelMapComponent(image,IndexPixelChannel,IndexPixelChannel); + SetPixelChannelMapChannel(image,IndexPixelChannel,IndexPixelChannel); SetPixelChannelMapTraits(image,IndexPixelChannel,CopyPixelTrait); } image->number_channels+=image->number_meta_channels; diff --git a/MagickCore/resize.c b/MagickCore/resize.c index 9a40f70fa..969289c91 100644 --- a/MagickCore/resize.c +++ b/MagickCore/resize.c @@ -2254,9 +2254,7 @@ static MagickBooleanType HorizontalFilter(const ResizeFilter *resize_filter, continue; } pixel=0.0; - if (((resize_traits & BlendPixelTrait) == 0) || - (GetPixelAlphaTraits(image) == UndefinedPixelTrait) || - (image->matte == MagickFalse)) + if ((resize_traits & BlendPixelTrait) == 0) { /* No alpha blending. @@ -2472,9 +2470,7 @@ static MagickBooleanType VerticalFilter(const ResizeFilter *resize_filter, continue; } pixel=0.0; - if (((resize_traits & BlendPixelTrait) == 0) || - (GetPixelAlphaTraits(image) == UndefinedPixelTrait) || - (image->matte == MagickFalse)) + if ((resize_traits & BlendPixelTrait) == 0) { /* No alpha blending. @@ -2843,21 +2839,16 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, next_row, proceed; - MagickRealType - alpha, - gamma, - pixel[MaxPixelChannels], + PixelInfo + pixel, *scale_scanline, *scanline, *x_vector, - *y_vector; - - PixelChannel - channel; + *y_vector, + zero; - PixelTrait - scale_traits, - traits; + MagickRealType + alpha; PointInfo scale, @@ -2867,7 +2858,6 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, i; ssize_t - n, number_rows, y; @@ -2896,20 +2886,20 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, /* Allocate memory. */ - x_vector=(MagickRealType *) AcquireQuantumMemory((size_t) image->columns, - GetPixelChannels(image)*sizeof(*x_vector)); + x_vector=(PixelInfo *) AcquireQuantumMemory((size_t) image->columns, + sizeof(*x_vector)); scanline=x_vector; if (image->rows != scale_image->rows) - scanline=(MagickRealType *) AcquireQuantumMemory((size_t) image->columns, - GetPixelChannels(image)*sizeof(*scanline)); - scale_scanline=(MagickRealType *) AcquireQuantumMemory((size_t) - scale_image->columns,GetPixelChannels(image)*sizeof(*scale_scanline)); - y_vector=(MagickRealType *) AcquireQuantumMemory((size_t) image->columns, - GetPixelChannels(image)*sizeof(*y_vector)); - if ((scanline == (MagickRealType *) NULL) || - (scale_scanline == (MagickRealType *) NULL) || - (x_vector == (MagickRealType *) NULL) || - (y_vector == (MagickRealType *) NULL)) + 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)) { scale_image=DestroyImage(scale_image); ThrowImageException(ResourceLimitError,"MemoryAllocationFailed"); @@ -2923,7 +2913,9 @@ 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)); - n=0; + GetPixelInfo(image,&pixel); + (void) ResetMagickMemory(&zero,0,sizeof(zero)); + i=0; image_view=AcquireCacheView(image); scale_view=AcquireCacheView(scale_image); for (y=0; y < (ssize_t) scale_image->rows; y++) @@ -2931,7 +2923,7 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, register const Quantum *restrict p; - register MagickRealType + register PixelInfo *restrict s, *restrict t; @@ -2945,30 +2937,27 @@ 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,n++,image->columns,1, + p=GetCacheViewVirtualPixels(image_view,0,i++,image->columns,1, exception); if (p == (const Quantum *) NULL) break; for (x=0; x < (ssize_t) image->columns; x++) { - alpha=QuantumScale*GetPixelAlpha(image,p); - for (i=0; i < (ssize_t) GetPixelChannels(image); i++) - { - traits=GetPixelChannelMapTraits(image,(PixelChannel) i); - if (((traits & BlendPixelTrait) == 0) || - (GetPixelAlphaTraits(image) == UndefinedPixelTrait) || - (image->matte == MagickFalse)) - { - x_vector[x*GetPixelChannels(image)+i]=(MagickRealType) p[i]; - continue; - } - x_vector[x*GetPixelChannels(image)+i]=alpha*p[i]; - } + 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)); p+=GetPixelChannels(image); } } @@ -2985,34 +2974,41 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, /* Read a new scanline. */ - p=GetCacheViewVirtualPixels(image_view,0,n++,image->columns,1, + p=GetCacheViewVirtualPixels(image_view,0,i++,image->columns,1, exception); if (p == (const Quantum *) NULL) break; for (x=0; x < (ssize_t) image->columns; x++) { - alpha=QuantumScale*GetPixelAlpha(image,p); - for (i=0; i < (ssize_t) GetPixelChannels(image); i++) - { - traits=GetPixelChannelMapTraits(image,(PixelChannel) i); - if (((traits & BlendPixelTrait) == 0) || - (GetPixelAlphaTraits(image) == UndefinedPixelTrait) || - (image->matte == MagickFalse)) - { - x_vector[x*GetPixelChannels(image)+i]=(MagickRealType) - p[i]; - continue; - } - x_vector[x*GetPixelChannels(image)+i]=alpha*p[i]; - } + 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); p+=GetPixelChannels(image); } number_rows++; } for (x=0; x < (ssize_t) image->columns; x++) - for (i=0; i < (ssize_t) GetPixelChannels(image); i++) - y_vector[x*GetPixelChannels(image)+i]+=scale.y* - x_vector[x*GetPixelChannels(image)+i]; + { + 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; + } span.y-=scale.y; scale.y=(double) scale_image->rows/(double) image->rows; next_row=MagickTrue; @@ -3022,25 +3018,22 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, /* Read a new scanline. */ - p=GetCacheViewVirtualPixels(image_view,0,n++,image->columns,1, + p=GetCacheViewVirtualPixels(image_view,0,i++,image->columns,1, exception); if (p == (const Quantum *) NULL) break; for (x=0; x < (ssize_t) image->columns; x++) { - alpha=QuantumScale*GetPixelAlpha(image,p); - for (i=0; i < (ssize_t) GetPixelChannels(image); i++) - { - traits=GetPixelChannelMapTraits(image,(PixelChannel) i); - if (((traits & BlendPixelTrait) == 0) || - (GetPixelAlphaTraits(image) == UndefinedPixelTrait) || - (image->matte == MagickFalse)) - { - x_vector[x*GetPixelChannels(image)+i]=(MagickRealType) p[i]; - continue; - } - x_vector[x*GetPixelChannels(image)+i]=alpha*p[i]; - } + 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); p+=GetPixelChannels(image); } number_rows++; @@ -3049,14 +3042,22 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, s=scanline; for (x=0; x < (ssize_t) image->columns; x++) { - 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); + 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; } scale.y-=span.y; if (scale.y <= 0) @@ -3074,27 +3075,18 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, s=scanline; for (x=0; x < (ssize_t) scale_image->columns; x++) { - channel=GetPixelChannelMapChannel(scale_image,AlphaPixelChannel); - alpha=QuantumScale*s[channel]; - gamma=1.0/(fabs((double) alpha) <= MagickEpsilon ? 1.0 : alpha); - 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; - if (((scale_traits & BlendPixelTrait) == 0) || - (GetPixelAlphaTraits(scale_image) == UndefinedPixelTrait) || - (scale_image->matte == MagickFalse)) - q[channel]=ClampToQuantum(s[i]); - else - q[channel]=ClampToQuantum(gamma*s[i]); - } + 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); q+=GetPixelChannels(scale_image); - s+=GetPixelChannels(image); + s++; } } else @@ -3102,8 +3094,7 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, /* Scale X direction. */ - for (i=0; i < (ssize_t) GetPixelChannels(image); i++) - pixel[i]=0.0; + pixel=zero; next_column=MagickFalse; span.x=1.0; s=scanline; @@ -3115,15 +3106,23 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, { if (next_column != MagickFalse) { - for (i=0; i < (ssize_t) GetPixelChannels(image); i++) - pixel[i]=0.0; - t+=GetPixelChannels(scale_image); + pixel=zero; + t++; } - for (i=0; i < (ssize_t) GetPixelChannels(image); i++) - { - pixel[i]+=span.x*s[i]; - t[i]=pixel[i]; - } + 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; scale.x-=span.x; span.x=1.0; next_column=MagickTrue; @@ -3132,28 +3131,42 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, { if (next_column != MagickFalse) { - for (i=0; i < (ssize_t) GetPixelChannels(image); i++) - pixel[i]=0.0; + pixel=zero; next_column=MagickFalse; - t+=GetPixelChannels(scale_image); + t++; } - for (i=0; i < (ssize_t) GetPixelChannels(image); i++) - pixel[i]+=scale.x*s[i]; + 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; span.x-=scale.x; } - s+=GetPixelChannels(image); + s++; } if (span.x > 0) { - s-=GetPixelChannels(image); - for (i=0; i < (ssize_t) GetPixelChannels(image); i++) - pixel[i]+=span.x*s[i]; + 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; } if ((next_column == MagickFalse) && ((ssize_t) (t-scale_scanline) < (ssize_t) scale_image->columns)) { - for (i=0; i < (ssize_t) GetPixelChannels(image); i++) - t[i]=pixel[i]; + 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; } /* Transfer scanline to scaled image. @@ -3161,27 +3174,18 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, t=scale_scanline; for (x=0; x < (ssize_t) scale_image->columns; x++) { - channel=GetPixelChannelMapChannel(scale_image,AlphaPixelChannel); - alpha=QuantumScale*t[channel]; - gamma=1.0/(fabs((double) alpha) <= MagickEpsilon ? 1.0 : alpha); - 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; - if (((scale_traits & BlendPixelTrait) == 0) || - (GetPixelAlphaTraits(scale_image) == UndefinedPixelTrait) || - (scale_image->matte == MagickFalse)) - q[channel]=ClampToQuantum(t[i]); - else - q[channel]=ClampToQuantum(gamma*t[i]); - } + 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++; q+=GetPixelChannels(scale_image); - t+=GetPixelChannels(scale_image); } } if (SyncCacheViewAuthenticPixels(scale_view,exception) == MagickFalse) @@ -3196,11 +3200,11 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, /* Free allocated memory. */ - y_vector=(MagickRealType *) RelinquishMagickMemory(y_vector); - scale_scanline=(MagickRealType *) RelinquishMagickMemory(scale_scanline); + y_vector=(PixelInfo *) RelinquishMagickMemory(y_vector); + scale_scanline=(PixelInfo *) RelinquishMagickMemory(scale_scanline); if (scale_image->rows != image->rows) - scanline=(MagickRealType *) RelinquishMagickMemory(scanline); - x_vector=(MagickRealType *) RelinquishMagickMemory(x_vector); + scanline=(PixelInfo *) RelinquishMagickMemory(scanline); + x_vector=(PixelInfo *) RelinquishMagickMemory(x_vector); scale_image->type=image->type; return(scale_image); } diff --git a/MagickCore/version.h b/MagickCore/version.h index ce1137774..4a7eec6a0 100644 --- a/MagickCore/version.h +++ b/MagickCore/version.h @@ -27,14 +27,14 @@ extern "C" { */ #define MagickPackageName "ImageMagick" #define MagickCopyright "Copyright (C) 1999-2011 ImageMagick Studio LLC" -#define MagickSVNRevision "4861" +#define MagickSVNRevision "exported" #define MagickLibVersion 0x700 #define MagickLibVersionText "7.0.0" #define MagickLibVersionNumber 5,0,0 #define MagickLibAddendum "-0" #define MagickLibInterface 5 #define MagickLibMinInterface 5 -#define MagickReleaseDate "2011-08-02" +#define MagickReleaseDate "2011-08-03" #define MagickChangeDate "20110801" #define MagickAuthoritativeURL "http://www.imagemagick.org" #if defined(MAGICKCORE_OPENMP_SUPPORT) diff --git a/index.html b/index.html index 08f77b78d..f00fca87a 100644 --- a/index.html +++ b/index.html @@ -200,7 +200,7 @@ Web Hosting Ratings @@ -225,7 +225,7 @@

The ImageMagick development process ensures a stable API and ABI. Before each ImageMagick release, we perform a comprehensive security assessment that includes memory and thread error detection to prevent security vulnerabilities.

-

The current release is ImageMagick 6.7.1-1.

+

The current release is ImageMagick 6.7.1-2.

diff --git a/www/advanced-unix-installation.html b/www/advanced-unix-installation.html index 1790b0ca1..c16f8d6e2 100644 --- a/www/advanced-unix-installation.html +++ b/www/advanced-unix-installation.html @@ -200,7 +200,7 @@ Web Hosting Ratings @@ -237,7 +237,7 @@

The configure script looks at your environment and decides what it can cobble together to get ImageMagick compiled and installed on your system. This includes finding a compiler, where your compiler header files are located (e.g. stdlib.h), and if any delegate libraries are available for ImageMagick to use (e.g. JPEG, PNG, TIFF, etc.). If you are willing to accept configure's default options, and build from within the source directory, you can simply type:

-

$magick> cd ImageMagick-6.7.1-1 $magick> ./configure

+

$magick> cd ImageMagick-6.7.1-2 $magick> ./configure

Watch the configure script output to verify that it finds everything that you think it should. Pay particular attention to the last lines of the script output. For example, here is a recent report from our system:

@@ -589,7 +589,7 @@ Options used to compile and link:

Download the ImageMagick source distribution and verify the distribution against its message digest.

Unpack and change into the top-level ImageMagick directory:

-

$magick> tar xvfz ImageMagick-6.7.1-1.tar.gz $magick> cd ImageMagick-6.7.1-1

Configure ImageMagick:

+

$magick> tar xvfz ImageMagick-6.7.1-2.tar.gz $magick> cd ImageMagick-6.7.1-2

Configure ImageMagick:

$magick> ./configure --prefix=/opt --with-quantum-depth=16 \
--disable-dependency-tracking --with-x=yes \
--x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib/ \
@@ -609,7 +609,7 @@ Options used to compile and link:

Although you can download and install delegate libraries yourself, many are already available in the GnuWin32 distribution. Download and install whichever delegate libraries you require such as JPEG, PNG, TIFF, etc. Make sure you specify the development headers when you install a package. Next type,

-

$magick> tar jxvf ImageMagick-6.7.1-?.tar.bz2 $magick> cd ImageMagick-6.7.1-1 $magick> export CPPFLAGS="-Ic:/Progra~1/GnuWin32/include" $magick> export LDFLAGS="-Lc:/Progra~1/GnuWin32/lib" $magick> ./configure --without-perl $magick> make $magick> sudo make install

+

$magick> tar jxvf ImageMagick-6.7.1-?.tar.bz2 $magick> cd ImageMagick-6.7.1-2 $magick> export CPPFLAGS="-Ic:/Progra~1/GnuWin32/include" $magick> export LDFLAGS="-Lc:/Progra~1/GnuWin32/lib" $magick> ./configure --without-perl $magick> make $magick> sudo make install

Dealing with Unexpected Problems

diff --git a/www/advanced-windows-installation.html b/www/advanced-windows-installation.html index 5d1163d7d..6f87ffdb9 100644 --- a/www/advanced-windows-installation.html +++ b/www/advanced-windows-installation.html @@ -200,7 +200,7 @@ Web Hosting Ratings
@@ -489,7 +489,7 @@
  1. Double-click on - VisualMagick/bin/ImageMagick-6.7.1-1-Q16-windows-dll.exe + VisualMagick/bin/ImageMagick-6.7.1-2-Q16-windows-dll.exe to launch the ImageMagick binary distribution.
  2. Complete the installer screens to install ImageMagick on your system.
diff --git a/www/animate.html b/www/animate.html index 014883ea7..b66cf4004 100644 --- a/www/animate.html +++ b/www/animate.html @@ -201,7 +201,7 @@ Web Hosting Ratings diff --git a/www/api/animate.html b/www/api/animate.html index 8caff8d99..dfcae668a 100644 --- a/www/api/animate.html +++ b/www/api/animate.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/annotate.html b/www/api/annotate.html index 2efa18b64..3374dcc1d 100644 --- a/www/api/annotate.html +++ b/www/api/annotate.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/attribute.html b/www/api/attribute.html index 6cf3ff532..32e130fb0 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 dd6c5fa03..3d9c9650d 100644 --- a/www/api/blob.html +++ b/www/api/blob.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/cache-view.html b/www/api/cache-view.html index c4e94ae39..f05aec268 100644 --- a/www/api/cache-view.html +++ b/www/api/cache-view.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/cache.html b/www/api/cache.html index d8b9eed34..7b54570fa 100644 --- a/www/api/cache.html +++ b/www/api/cache.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/color.html b/www/api/color.html index e0b7016c9..9352f019c 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 e2bf12fd6..433a5c352 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 ae3cee551..8cf5d19ca 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 1e7f3bfd5..9d1b06d5c 100644 --- a/www/api/composite.html +++ b/www/api/composite.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/constitute.html b/www/api/constitute.html index cf075d605..0aef579a5 100644 --- a/www/api/constitute.html +++ b/www/api/constitute.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/decorate.html b/www/api/decorate.html index 5ea69b9f0..07911223c 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 e1afa5436..f8c20c41e 100644 --- a/www/api/deprecate.html +++ b/www/api/deprecate.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/display.html b/www/api/display.html index 862b87904..5ed6b2264 100644 --- a/www/api/display.html +++ b/www/api/display.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/distort.html b/www/api/distort.html index b1782d5c6..736be4c18 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 73d509303..20a26c7fb 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 60efa481b..414f7a7f7 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 f59a7df10..67cee14ed 100644 --- a/www/api/effect.html +++ b/www/api/effect.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/exception.html b/www/api/exception.html index eb6bdd6e1..09c74786c 100644 --- a/www/api/exception.html +++ b/www/api/exception.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/fourier.html b/www/api/fourier.html index 86bc6226c..0eb31d203 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 c57ba44ee..41ba876b1 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 4e1dbdf63..9cfd26dad 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 2a0d1a15e..cd334cfd0 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 d72ff8606..2b6c93b62 100644 --- a/www/api/image.html +++ b/www/api/image.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/layer.html b/www/api/layer.html index d39257da6..6dc078bd0 100644 --- a/www/api/layer.html +++ b/www/api/layer.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/list.html b/www/api/list.html index 293ae205b..ff40c1bbf 100644 --- a/www/api/list.html +++ b/www/api/list.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/magick-deprecate.html b/www/api/magick-deprecate.html index 4f4cd2ea0..9d3438fc3 100644 --- a/www/api/magick-deprecate.html +++ b/www/api/magick-deprecate.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/magick-image.html b/www/api/magick-image.html index 0b5a7d6eb..b8e30bb75 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 aa4268095..dec90a237 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 4f8cddd8c..37316dbf2 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/memory.html b/www/api/memory.html index c811553b5..582efac26 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 b8b09ff2a..e1e13865a 100644 --- a/www/api/module.html +++ b/www/api/module.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/mogrify.html b/www/api/mogrify.html index 4ecfb3221..c5ab4023e 100644 --- a/www/api/mogrify.html +++ b/www/api/mogrify.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/monitor.html b/www/api/monitor.html index 006455012..341ff21eb 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 a90fbd5e8..9b19c5907 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 1bc58d11a..6d8da52c5 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 05a049cbd..ccb132554 100644 --- a/www/api/paint.html +++ b/www/api/paint.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/pixel-iterator.html b/www/api/pixel-iterator.html index b723580bf..ff8ad2cf0 100644 --- a/www/api/pixel-iterator.html +++ b/www/api/pixel-iterator.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/pixel-wand.html b/www/api/pixel-wand.html index 4d506d688..9b95a513f 100644 --- a/www/api/pixel-wand.html +++ b/www/api/pixel-wand.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/profile.html b/www/api/profile.html index ab95c59e9..5986765e2 100644 --- a/www/api/profile.html +++ b/www/api/profile.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/quantize.html b/www/api/quantize.html index 649fef079..d6f9ece7f 100644 --- a/www/api/quantize.html +++ b/www/api/quantize.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/registry.html b/www/api/registry.html index 7ed63e620..860e4a400 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 33e7b7fad..335416540 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 68d1ed9ff..dac1833f3 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 17699ca92..1c6b7330e 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 7bd6a43bb..3c50595d5 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 5b861bf7b..3b2913c58 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 4ed2412f5..04b8f8e39 100644 --- a/www/api/statistic.html +++ b/www/api/statistic.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/stream.html b/www/api/stream.html index 5ecd80a1c..09a8fb330 100644 --- a/www/api/stream.html +++ b/www/api/stream.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/api/transform.html b/www/api/transform.html index df16220d3..c16a77b94 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 683871440..25bc21b35 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 d47cc29db..907678596 100644 --- a/www/api/wand-view.html +++ b/www/api/wand-view.html @@ -200,7 +200,7 @@ Web Hosting Ratings diff --git a/www/architecture.html b/www/architecture.html index f3755021b..0c6baa7b4 100644 --- a/www/architecture.html +++ b/www/architecture.html @@ -200,7 +200,7 @@ Web Hosting Ratings @@ -304,7 +304,7 @@

When the pixel cache is initialized, pixels are scaled from whatever bit depth they originated from to that required by the pixel cache. For example, a 1-channel 1-bit monochrome PBM image is scaled to a 4 channel 8-bit RGBA image, if you are using the Q8 version of ImageMagick, and 16-bit RGBA for the Q16 version. You can determine which version you have with the ‑version option:

-

$magick> identify -versionVersion: ImageMagick 6.7.1-1 2011-07-01 Q16 http://www.imagemagick.org

+

$magick> identify -versionVersion: ImageMagick 6.7.1-2 2011-07-01 Q16 http://www.imagemagick.org

As you can see, the convenience of the pixel cache sometimes comes with a trade-off in storage (e.g. storing a 1-bit monochrome image as 16-bit RGBA is wasteful) and speed (i.e. storing the entire image in memory is generally slower than accessing one scanline of pixels at a time). In most cases, the benefits of the pixel cache typically outweigh any disadvantages.

diff --git a/www/binary-releases.html b/www/binary-releases.html index 8ab32bc1a..3fa791fd8 100644 --- a/www/binary-releases.html +++ b/www/binary-releases.html @@ -200,7 +200,7 @@ Web Hosting Ratings @@ -235,16 +235,16 @@ - ImageMagick-6.7.1-1.i386.rpm - download - download + ImageMagick-6.7.1-2.i386.rpm + download + download CentOS 5.4 i386 RPM - ImageMagick-6.7.1-1.x86_64.rpm - download - download + ImageMagick-6.7.1-2.x86_64.rpm + download + download CentOS 5.4 x86_64 RPM @@ -281,7 +281,7 @@

ImageMagick RPM's are self-installing. Simply type the following command and you're ready to start using ImageMagick:

-

$magick> rpm -Uvh ImageMagick-6.7.1-1.i386.rpm

+

$magick> rpm -Uvh ImageMagick-6.7.1-2.i386.rpm

For other systems, create (or choose) a directory to install the package into and change to that directory, for example:

$magick> cd $HOME

@@ -381,7 +381,7 @@
 	./imagemagick_compile.sh VERSION
 
-

where VERSION is the version of ImageMagick you want to compile (i.e.: 6.7.1-1, svn, ...)

+

where VERSION is the version of ImageMagick you want to compile (i.e.: 6.7.1-2, svn, ...)

This script compiles ImageMagick as a static library to be included in iOS projects and adds support for