% %
% %
% %
+% G e t I m a g e C o l o r s p a c e T y p e %
+% %
+% %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% GetImageColorspaceType() returns the potential type of image:
+% sRGBColorspaceType, RGBColorspaceType, GRAYColorspaceType, etc.
+%
+% To ensure the image type matches its potential, use SetImageColorspaceType():
+%
+% (void) SetImageColorspaceType(image,GetImageColorspaceType(image),
+% exception);
+%
+% The format of the GetImageColorspaceType method is:
+%
+% ColorspaceType GetImageColorspaceType(const Image *image,
+% ExceptionInfo *exception)
+%
+% A description of each parameter follows:
+%
+% o image: the image.
+%
+% o exception: return any errors or warnings in this structure.
+%
+*/
+MagickExport ColorspaceType GetImageColorspaceType(const Image *image,
+ ExceptionInfo *exception)
+{
+ ColorspaceType
+ colorspace;
+
+ ImageType
+ type;
+
+ assert(image != (Image *) NULL);
+ assert(image->signature == MagickCoreSignature);
+ if (image->debug != MagickFalse)
+ (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
+ colorspace=image->colorspace;
+ type=IdentifyImageType(image,exception);
+ if ((type == BilevelType) || (type == GrayscaleType) ||
+ (type == GrayscaleAlphaType))
+ colorspace=GRAYColorspace;
+ return(colorspace);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% %
+% %
+ s R G B T r a n s f o r m I m a g e %
% %
% %
YUVColorspace
} ColorspaceType;
+extern MagickExport ColorspaceType
+ GetImageColorspaceType(const Image *,ExceptionInfo *);
+
extern MagickExport MagickBooleanType
SetImageColorspace(Image *,const ColorspaceType,ExceptionInfo *),
SetImageGray(Image *,ExceptionInfo *),
user_time;
ImageType
- base_type,
type;
MagickBooleanType
if (channel_statistics == (ChannelStatistics *) NULL)
return(MagickFalse);
(void) FormatLocaleFile(file,"Channel %s locations:\n",locate);
- colorspace=image->colorspace;
- type=IdentifyImageType(image,exception);
- if ((type == BilevelType) || (type == GrayscaleType) ||
- (type == GrayscaleAlphaType))
- colorspace=GRAYColorspace;
+ colorspace=GetImageColorspaceType(image,exception);
switch (colorspace)
{
case RGBColorspace:
/*
Display verbose info about the image.
*/
- colorspace=image->colorspace;
- type=IdentifyImageType(image,exception);
- if ((type == BilevelType) || (type == GrayscaleType) ||
- (type == GrayscaleAlphaType))
- colorspace=GRAYColorspace;
p=GetVirtualPixels(image,0,0,1,1,exception);
ping=p == (const Quantum *) NULL ? MagickTrue : MagickFalse;
(void) SignatureImage(image,exception);
}
(void) FormatLocaleFile(file," Units: %s\n",CommandOptionToMnemonic(
MagickResolutionOptions,(ssize_t) image->units));
+ type=GetImageType(image);
(void) FormatLocaleFile(file," Type: %s\n",CommandOptionToMnemonic(
MagickTypeOptions,(ssize_t) type));
- base_type=GetImageType(image);
- if (type != base_type)
+ if (image->type != type)
(void) FormatLocaleFile(file," Base type: %s\n",CommandOptionToMnemonic(
- MagickTypeOptions,(ssize_t) base_type));
+ MagickTypeOptions,(ssize_t) image->type));
(void) FormatLocaleFile(file," Endianess: %s\n",CommandOptionToMnemonic(
MagickEndianOptions,(ssize_t) image->endian));
/*
Detail channel depth and extrema.
*/
+ colorspace=GetImageColorspaceType(image,exception);
(void) FormatLocaleFile(file," Colorspace: %s\n",CommandOptionToMnemonic(
MagickColorspaceOptions,(ssize_t) colorspace));
+ if (colorspace != image->colorspace)
+ (void) FormatLocaleFile(file," Base colorspace: %s\n",
+ CommandOptionToMnemonic(MagickColorspaceOptions,(ssize_t)
+ image->colorspace));
channel_statistics=(ChannelStatistics *) NULL;
channel_moments=(ChannelMoments *) NULL;
channel_phash=(ChannelPerceptualHash *) NULL;
}
if (LocaleCompare("colorspace",property) == 0)
{
- ColorspaceType
- colorspace;
-
- ImageType
- type;
-
- colorspace=image->colorspace;
- type=IdentifyImageType(image,exception);
- if ((type == BilevelType) || (type == GrayscaleType) ||
- (type == GrayscaleAlphaType))
- colorspace=GRAYColorspace;
WarnNoImageReturn("\"%%[%s]\"",property);
string=CommandOptionToMnemonic(MagickColorspaceOptions,(ssize_t)
- colorspace);
+ GetImageColorspaceType(image,exception));
break;
}
if (LocaleCompare("compose",property) == 0)
user_time;
ImageType
- base_type,
type;
MagickBooleanType
}
JSONFormatLocaleFile(file," \"units\": %s,\n",CommandOptionToMnemonic(
MagickResolutionOptions,(ssize_t) image->units));
- colorspace=image->colorspace;
- type=IdentifyImageType(image,exception);
- if ((type == BilevelType) || (type == GrayscaleType) ||
- (type == GrayscaleAlphaType))
- colorspace=GRAYColorspace;
+ type=GetImageType(image);
JSONFormatLocaleFile(file," \"type\": %s,\n",CommandOptionToMnemonic(
MagickTypeOptions,(ssize_t) type));
- base_type=GetImageType(image);
- if (type != base_type)
+ if (image->type != type)
JSONFormatLocaleFile(file," \"baseType\": %s,\n",
- CommandOptionToMnemonic(MagickTypeOptions,(ssize_t) base_type));
+ CommandOptionToMnemonic(MagickTypeOptions,(ssize_t) image->type));
JSONFormatLocaleFile(file," \"endianess\": %s,\n",
CommandOptionToMnemonic(MagickEndianOptions,(ssize_t) image->endian));
locate=GetImageArtifact(image,"identify:locate");
if (image->alpha_trait != UndefinedPixelTrait)
(void) PrintChannelLocations(file,image,AlphaPixelChannel,"Alpha",
type,max_locations,MagickTrue,channel_statistics);
+ colorspace=GetImageColorspaceType(image,exception);
switch (colorspace)
{
case RGBColorspace:
/*
Detail channel depth and extrema.
*/
+ colorspace=GetImageColorspaceType(image,exception);
JSONFormatLocaleFile(file," \"colorspace\": %s,\n",
CommandOptionToMnemonic(MagickColorspaceOptions,(ssize_t) colorspace));
+ if (image->colorspace != colorspace)
+ JSONFormatLocaleFile(file," \"baseColorspace\": %s,\n",
+ CommandOptionToMnemonic(MagickColorspaceOptions,(ssize_t)
+ image->colorspace));
channel_statistics=(ChannelStatistics *) NULL;
channel_moments=(ChannelMoments *) NULL;
channel_phash=(ChannelPerceptualHash *) NULL;