diff --git a/coders/fax.c b/coders/fax.c
index f424923..665b2e4 100644
--- a/coders/fax.c
+++ b/coders/fax.c
@@ -40,6 +40,7 @@
Include declarations.
*/
#include "MagickCore/studio.h"
+#include "MagickCore/attribute.h"
#include "MagickCore/blob.h"
#include "MagickCore/blob-private.h"
#include "MagickCore/colormap.h"
@@ -330,7 +331,8 @@
/*
Convert MIFF to monochrome.
*/
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
(void) TransformImageColorspace(image,sRGBColorspace,exception);
status=HuffmanEncodeImage(write_info,image,image,exception);
if (GetNextImageInList(image) == (Image *) NULL)
diff --git a/coders/fits.c b/coders/fits.c
index dfe5be9..1af8d9c 100644
--- a/coders/fits.c
+++ b/coders/fits.c
@@ -636,6 +636,9 @@
status=OpenBlob(image_info,image,WriteBinaryBlobMode,exception);
if (status == MagickFalse)
return(status);
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
+ (void) TransformImageColorspace(image,sRGBColorspace,exception);
/*
Allocate image memory.
*/
@@ -737,8 +740,6 @@
}
else
{
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
- (void) TransformImageColorspace(image,sRGBColorspace,exception);
length=GetQuantumExtent(image,quantum_info,RedQuantum);
for (y=(ssize_t) image->rows-1; y >= 0; y--)
{
diff --git a/coders/fpx.c b/coders/fpx.c
index 67c5b76..3e1e841 100644
--- a/coders/fpx.c
+++ b/coders/fpx.c
@@ -853,6 +853,9 @@
status=OpenBlob(image_info,image,WriteBinaryBlobMode,exception);
if (status == MagickFalse)
return(status);
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
+ (void) TransformImageColorspace(image,sRGBColorspace,exception);
(void) CloseBlob(image);
/*
Initialize FPX toolkit.
@@ -873,9 +876,6 @@
colorspace.numberOfComponents=1;
colorspace.theComponents[0].myColor=MONOCHROME;
}
- else
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
- (void) TransformImageColorspace(image,sRGBColorspace,exception);
background_color.color1_value=0;
background_color.color2_value=0;
background_color.color3_value=0;
diff --git a/coders/gray.c b/coders/gray.c
index 2072309..ce601f3 100644
--- a/coders/gray.c
+++ b/coders/gray.c
@@ -40,6 +40,7 @@
Include declarations.
*/
#include "MagickCore/studio.h"
+#include "MagickCore/attribute.h"
#include "MagickCore/blob.h"
#include "MagickCore/blob-private.h"
#include "MagickCore/cache.h"
@@ -411,7 +412,8 @@
/*
Write grayscale pixels.
*/
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
(void) TransformImageColorspace(image,sRGBColorspace,exception);
quantum_type=GrayQuantum;
quantum_info=AcquireQuantumInfo(image_info,image);
diff --git a/coders/jbig.c b/coders/jbig.c
index 9d11b8f..36ca5b4 100644
--- a/coders/jbig.c
+++ b/coders/jbig.c
@@ -446,7 +446,8 @@
/*
Allocate pixel data.
*/
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
(void) TransformImageColorspace(image,sRGBColorspace,exception);
number_packets=(image->columns+7)/8;
pixels=(unsigned char *) AcquireQuantumMemory(number_packets,
diff --git a/coders/jp2.c b/coders/jp2.c
index 47b3b80..18c36c5 100644
--- a/coders/jp2.c
+++ b/coders/jp2.c
@@ -911,7 +911,8 @@
/*
Initialize JPEG 2000 API.
*/
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
(void) TransformImageColorspace(image,sRGBColorspace,exception);
jp2_stream=JP2StreamManager(image);
if (jp2_stream == (jas_stream_t *) NULL)
diff --git a/coders/mat.c b/coders/mat.c
index a76b4b7..5e94865 100644
--- a/coders/mat.c
+++ b/coders/mat.c
@@ -1239,11 +1239,10 @@
scene=0;
do
{
-
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
+ (void) TransformImageColorspace(image,sRGBColorspace,exception);
is_gray = IsImageGray(image,exception);
- if (is_gray == MagickFalse)
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
- (void) TransformImageColorspace(image,sRGBColorspace,exception);
z = is_gray ? 0 : 3;
/*
diff --git a/coders/mono.c b/coders/mono.c
index c5d154b..27955aa 100644
--- a/coders/mono.c
+++ b/coders/mono.c
@@ -40,6 +40,7 @@
Include declarations.
*/
#include "MagickCore/studio.h"
+#include "MagickCore/attribute.h"
#include "MagickCore/blob.h"
#include "MagickCore/blob-private.h"
#include "MagickCore/cache.h"
@@ -313,7 +314,8 @@
status=OpenBlob(image_info,image,WriteBinaryBlobMode,exception);
if (status == MagickFalse)
return(status);
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
(void) TransformImageColorspace(image,sRGBColorspace,exception);
/*
Convert image to a bi-level image.
diff --git a/coders/otb.c b/coders/otb.c
index 5f16098..b8828bc 100644
--- a/coders/otb.c
+++ b/coders/otb.c
@@ -39,6 +39,7 @@
Include declarations.
*/
#include "MagickCore/studio.h"
+#include "MagickCore/attribute.h"
#include "MagickCore/blob.h"
#include "MagickCore/blob-private.h"
#include "MagickCore/cache.h"
@@ -333,7 +334,8 @@
status=OpenBlob(image_info,image,WriteBinaryBlobMode,exception);
if (status == MagickFalse)
return(status);
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
(void) TransformImageColorspace(image,sRGBColorspace,exception);
/*
Convert image to a bi-level image.
diff --git a/coders/pcl.c b/coders/pcl.c
index e4e5174..8a28aeb 100644
--- a/coders/pcl.c
+++ b/coders/pcl.c
@@ -721,7 +721,8 @@
one=1;
do
{
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
(void) TransformImageColorspace(image,sRGBColorspace,exception);
/*
Initialize the printer.
diff --git a/coders/pcx.c b/coders/pcx.c
index c8052cf..bc0233a 100644
--- a/coders/pcx.c
+++ b/coders/pcx.c
@@ -879,7 +879,8 @@
status=OpenBlob(image_info,image,WriteBinaryBlobMode,exception);
if (status == MagickFalse)
return(status);
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
(void) TransformImageColorspace(image,sRGBColorspace,exception);
page_table=(MagickOffsetType *) NULL;
if ((LocaleCompare(image_info->magick,"DCX") == 0) ||
diff --git a/coders/pdb.c b/coders/pdb.c
index d1187a9..1fca1b3 100644
--- a/coders/pdb.c
+++ b/coders/pdb.c
@@ -743,9 +743,9 @@
status=OpenBlob(image_info,image,WriteBinaryBlobMode,exception);
if (status == MagickFalse)
return(status);
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
(void) TransformImageColorspace(image,sRGBColorspace,exception);
-
if (image -> colors <= 2 || GetImageType( image, exception ) == BilevelType) { /* TS */
bits_per_pixel = 1;
} else if (image -> colors <= 4) {
diff --git a/coders/png.c b/coders/png.c
index b098c40..8d92d1f 100644
--- a/coders/png.c
+++ b/coders/png.c
@@ -1131,7 +1131,7 @@
return(y);
}
-static char *
+static const char *
Magick_ColorType_from_PNG_ColorType(const int ping_colortype)
{
switch (ping_colortype)
diff --git a/coders/pnm.c b/coders/pnm.c
index d4e9242..5fa8918 100644
--- a/coders/pnm.c
+++ b/coders/pnm.c
@@ -1564,7 +1564,8 @@
}
if (format != '7')
{
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
(void) TransformImageColorspace(image,sRGBColorspace,exception);
(void) FormatLocaleString(buffer,MaxTextExtent,"%.20g %.20g\n",
(double) image->columns,(double) image->rows);
diff --git a/coders/ps.c b/coders/ps.c
index 0cb112f..137700b 100644
--- a/coders/ps.c
+++ b/coders/ps.c
@@ -1443,11 +1443,10 @@
/*
Scale relative to dots-per-inch.
*/
- if ((image_info->type == TrueColorType) ||
- (IsImageGray(image,exception) == MagickFalse))
- if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
- (image->colorspace != CMYKColorspace))
- (void) TransformImageColorspace(image,sRGBColorspace,exception);
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse) &&
+ (image->colorspace != CMYKColorspace))
+ (void) TransformImageColorspace(image,sRGBColorspace,exception);
delta.x=DefaultResolution;
delta.y=DefaultResolution;
resolution.x=image->resolution.x;
diff --git a/coders/sun.c b/coders/sun.c
index a4c0ff1..4a970d8 100644
--- a/coders/sun.c
+++ b/coders/sun.c
@@ -761,7 +761,8 @@
/*
Initialize SUN raster file header.
*/
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
(void) TransformImageColorspace(image,sRGBColorspace,exception);
sun_info.magic=0x59a66a95;
if ((image->columns != (unsigned int) image->columns) ||
diff --git a/coders/vicar.c b/coders/vicar.c
index 855feda..87c99e4 100644
--- a/coders/vicar.c
+++ b/coders/vicar.c
@@ -40,6 +40,7 @@
Include declarations.
*/
#include "MagickCore/studio.h"
+#include "MagickCore/attribute.h"
#include "MagickCore/blob.h"
#include "MagickCore/blob-private.h"
#include "MagickCore/cache.h"
@@ -457,7 +458,8 @@
status=OpenBlob(image_info,image,WriteBinaryBlobMode,exception);
if (status == MagickFalse)
return(status);
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
(void) TransformImageColorspace(image,sRGBColorspace,exception);
/*
Write header.
diff --git a/coders/viff.c b/coders/viff.c
index 7b01de1..a55f5d9 100644
--- a/coders/viff.c
+++ b/coders/viff.c
@@ -974,11 +974,9 @@
/*
Initialize VIFF image structure.
*/
- if (IsImageGray(image,exception) != MagickFalse)
- (void) SetImageStorageClass(image,DirectClass,exception);
- else
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
- (void) TransformImageColorspace(image,sRGBColorspace,exception);
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
+ (void) TransformImageColorspace(image,sRGBColorspace,exception);
viff_info.identifier=(char) 0xab;
viff_info.file_type=1;
viff_info.release=1;
diff --git a/coders/wbmp.c b/coders/wbmp.c
index 8fa4f5c..4204818 100644
--- a/coders/wbmp.c
+++ b/coders/wbmp.c
@@ -39,6 +39,7 @@
Include declarations.
*/
#include "MagickCore/studio.h"
+#include "MagickCore/attribute.h"
#include "MagickCore/blob.h"
#include "MagickCore/blob-private.h"
#include "MagickCore/cache.h"
@@ -377,7 +378,8 @@
status=OpenBlob(image_info,image,WriteBinaryBlobMode,exception);
if (status == MagickFalse)
return(status);
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
(void) TransformImageColorspace(image,sRGBColorspace,exception);
/*
Convert image to a bi-level image.
diff --git a/coders/xbm.c b/coders/xbm.c
index c950b48..2d8d92a 100644
--- a/coders/xbm.c
+++ b/coders/xbm.c
@@ -40,6 +40,7 @@
Include declarations.
*/
#include "MagickCore/studio.h"
+#include "MagickCore/attribute.h"
#include "MagickCore/blob.h"
#include "MagickCore/blob-private.h"
#include "MagickCore/cache.h"
@@ -510,7 +511,8 @@
status=OpenBlob(image_info,image,WriteBinaryBlobMode,exception);
if (status == MagickFalse)
return(status);
- if (IssRGBColorspace(image->colorspace) == MagickFalse)
+ if ((IssRGBColorspace(image->colorspace) == MagickFalse) &&
+ (IsImageGray(image,exception) == MagickFalse))
(void) TransformImageColorspace(image,sRGBColorspace,exception);
/*
Write X bitmap header.
diff --git a/coders/xcf.c b/coders/xcf.c
index 3d69997..cd82957 100644
--- a/coders/xcf.c
+++ b/coders/xcf.c
@@ -881,7 +881,7 @@
scene;
scene=inDocInfo->number_layers-layer-1;
- if (scene > (image_info->scene+image_info->number_scenes-1))
+ if (scene > (ssize_t) (image_info->scene+image_info->number_scenes-1))
{
outLayer->image=CloneImage(image,0,0,MagickTrue,exception);
if (outLayer->image == (Image *) NULL)