From: cristy Date: Tue, 27 Sep 2011 18:08:52 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~6944 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7ef907281462847f014f197fc6cb41009d33c5d8;p=imagemagick --- diff --git a/MagickCore/quantum-export.c b/MagickCore/quantum-export.c index cef5547b2..d2cf1db02 100644 --- a/MagickCore/quantum-export.c +++ b/MagickCore/quantum-export.c @@ -2721,17 +2721,15 @@ MagickExport size_t ExportQuantumPixels(Image *image,CacheView *image_view, } for (x=0; x < (ssize_t) number_pixels; x++) { - pixel=(unsigned int) ScaleQuantumToAny( - GetPixelRed(image,p),range); + pixel=(unsigned int) ScaleQuantumToAny(GetPixelRed(image,p),range); q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q); - pixel=(unsigned int) ScaleQuantumToAny( - GetPixelGreen(image,p),range); + pixel=(unsigned int) ScaleQuantumToAny(GetPixelGreen(image,p), + range); q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q); - pixel=(unsigned int) ScaleQuantumToAny( - GetPixelBlue(image,p),range); + pixel=(unsigned int) ScaleQuantumToAny(GetPixelBlue(image,p),range); q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q); - pixel=(unsigned int) ScaleQuantumToAny( - GetPixelAlpha(image,p),range); + pixel=(unsigned int) ScaleQuantumToAny(GetPixelAlpha(image,p), + range); q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q); p+=channels; q+=quantum_info->pad; diff --git a/MagickCore/signature.c b/MagickCore/signature.c index 97bdd6d67..4859a9e21 100644 --- a/MagickCore/signature.c +++ b/MagickCore/signature.c @@ -46,6 +46,7 @@ #include "MagickCore/property.h" #include "MagickCore/image.h" #include "MagickCore/memory_.h" +#include "MagickCore/pixel-accessor.h" #include "MagickCore/quantum.h" #include "MagickCore/quantum-private.h" #include "MagickCore/signature.h" @@ -476,11 +477,9 @@ MagickExport MagickBooleanType SignatureImage(Image *image, char *hex_signature; - QuantumInfo - *quantum_info; - - QuantumType - quantum_type; + QuantumAny + pixel, + range; register const Quantum *p; @@ -488,9 +487,6 @@ MagickExport MagickBooleanType SignatureImage(Image *image, SignatureInfo *signature_info; - size_t - length; - ssize_t y; @@ -507,36 +503,44 @@ MagickExport MagickBooleanType SignatureImage(Image *image, assert(image->signature == MagickSignature); if (image->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); - quantum_info=AcquireQuantumInfo((const ImageInfo *) NULL,image); - if (quantum_info == (QuantumInfo *) NULL) - ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed", - image->filename); - quantum_type=RGBQuantum; - if (image->matte != MagickFalse) - quantum_type=RGBAQuantum; - if (image->colorspace == CMYKColorspace) - { - quantum_type=CMYKQuantum; - if (image->matte != MagickFalse) - quantum_type=CMYKAQuantum; - } signature_info=AcquireSignatureInfo(); - signature=AcquireStringInfo(quantum_info->extent); - pixels=GetQuantumPixels(quantum_info); + signature=AcquireStringInfo(sizeof(QuantumAny)); + pixels=GetStringInfoDatum(signature); + range=GetQuantumRange(image->depth); image_view=AcquireCacheView(image); for (y=0; y < (ssize_t) image->rows; y++) { + register ssize_t + x; + p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception); if (p == (const Quantum *) NULL) break; - length=ExportQuantumPixels(image,image_view,quantum_info,quantum_type, - pixels,&image->exception); - SetStringInfoLength(signature,length); - SetStringInfoDatum(signature,pixels); - UpdateSignature(signature_info,signature); + for (x=0; x < (ssize_t) image->columns; x++) + { + register ssize_t + i; + + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + { + PixelTrait + traits; + + register ssize_t + j; + + traits=GetPixelChannelMapTraits(image,(PixelChannel) i); + if (traits == UndefinedPixelTrait) + continue; + pixel=ScaleQuantumToAny(p[i],range); + for (j=0; j < (ssize_t) sizeof(QuantumAny); j++) + pixels[j]=(unsigned char) ((pixel >> (j*8)) & 0xff); + UpdateSignature(signature_info,signature); + } + p+=GetPixelChannels(image); + } } image_view=DestroyCacheView(image_view); - quantum_info=DestroyQuantumInfo(quantum_info); FinalizeSignature(signature_info); hex_signature=StringInfoToHexString(GetSignatureDigest(signature_info)); (void) DeleteImageProperty(image,"signature");