diff --git a/coders/fits.c b/coders/fits.c
index 0f0374c..e8bc772 100644
--- a/coders/fits.c
+++ b/coders/fits.c
@@ -416,6 +416,7 @@
fits_info.bits_per_pixel;
image->endian=fits_info.endian;
image->scene=(size_t) scene;
+ image->colorspace=GRAYColorspace;
if ((image_info->ping != MagickFalse) && (image_info->number_scenes != 0))
if (image->scene >= (image_info->scene+image_info->number_scenes-1))
break;
@@ -444,10 +445,8 @@
for (x=0; x < (ssize_t) image->columns; x++)
{
pixel=GetFITSPixel(image,fits_info.bits_per_pixel);
- SetPixelRed(image,ClampToQuantum(scale*(fits_info.scale*
+ SetPixelGray(image,ClampToQuantum(scale*(fits_info.scale*
(pixel-fits_info.min_data)+fits_info.zero)),q);
- SetPixelGreen(image,GetPixelRed(image,q),q);
- SetPixelBlue(image,GetPixelRed(image,q),q);
q+=GetPixelChannels(image);
}
if (SyncAuthenticPixels(image,exception) == MagickFalse)
diff --git a/coders/jp2.c b/coders/jp2.c
index fcae3b6..0c74b7a 100644
--- a/coders/jp2.c
+++ b/coders/jp2.c
@@ -467,6 +467,8 @@
image->columns=jas_image_width(jp2_image);
image->rows=jas_image_height(jp2_image);
image->compression=JPEG2000Compression;
+ if (number_components == 1)
+ image->colorspace=GRAYColorspace;
for (i=0; i < (ssize_t) number_components; i++)
{
size_t
@@ -538,9 +540,7 @@
for (x=0; x < (ssize_t) image->columns; x++)
{
pixel=(QuantumAny) jas_matrix_getv(pixels[0],x/x_step[0]);
- SetPixelRed(image,ScaleAnyToQuantum((QuantumAny) pixel,range[0]),q);
- SetPixelGreen(image,GetPixelRed(image,q),q);
- SetPixelBlue(image,GetPixelRed(image,q),q);
+ SetPixelGray(image,ScaleAnyToQuantum((QuantumAny) pixel,range[0]),q);
q+=GetPixelChannels(image);
}
break;
diff --git a/coders/pnm.c b/coders/pnm.c
index dfb6042..906b21d 100644
--- a/coders/pnm.c
+++ b/coders/pnm.c
@@ -1161,6 +1161,8 @@
/*
Convert PFM raster image to pixel packets.
*/
+ if (format == 'f')
+ image->colorspace=GRAYColorspace;
quantum_type=format == 'f' ? GrayQuantum : RGBQuantum;
image->endian=quantum_scale < 0.0 ? LSBEndian : MSBEndian;
image->depth=32;
diff --git a/coders/psd.c b/coders/psd.c
index ff41054..6024249 100644
--- a/coders/psd.c
+++ b/coders/psd.c
@@ -642,10 +642,9 @@
{
SetPixelRed(image,pixel,q);
if (channels == 1)
- {
- SetPixelGreen(image,GetPixelRed(image,q),q);
- SetPixelBlue(image,GetPixelRed(image,q),q);
- }
+ SetPixelGray(image,pixel,q);
+ else
+ SetPixelRed(image,pixel,q);
if (image->storage_class == PseudoClass)
{
if (packet_size == 1)
diff --git a/coders/xcf.c b/coders/xcf.c
index fddfc85..ed6693e 100644
--- a/coders/xcf.c
+++ b/coders/xcf.c
@@ -373,9 +373,7 @@
{
for (x=0; x < (ssize_t) tile_image->columns; x++)
{
- SetPixelRed(tile_image,ScaleCharToQuantum(*graydata),q);
- SetPixelGreen(tile_image,GetPixelRed(image,q),q);
- SetPixelBlue(tile_image,GetPixelRed(image,q),q);
+ SetPixelGray(tile_image,ScaleCharToQuantum(*graydata),q);
SetPixelAlpha(tile_image,ScaleCharToQuantum((unsigned char)
inLayerInfo->alpha),q);
graydata++;
@@ -471,9 +469,9 @@
{
case 0:
{
- SetPixelRed(tile_image,ScaleCharToQuantum(data),q);
- if (inDocInfo->image_type == GIMP_GRAY)
+ if (inDocInfo->image_type != GIMP_GRAY)
{
+ SetPixelRed(tile_image,ScaleCharToQuantum(data),q);
SetPixelGreen(tile_image,ScaleCharToQuantum(data),q);
SetPixelBlue(tile_image,ScaleCharToQuantum(data),q);
SetPixelAlpha(tile_image,ScaleCharToQuantum(
@@ -481,8 +479,7 @@
}
else
{
- SetPixelGreen(tile_image,GetPixelRed(image,q),q);
- SetPixelBlue(tile_image,GetPixelRed(image,q),q);
+ SetPixelGray(tile_image,ScaleCharToQuantum(data),q);
SetPixelAlpha(tile_image,ScaleCharToQuantum(
(unsigned char) inLayerInfo->alpha),q);
}
@@ -531,9 +528,9 @@
{
case 0:
{
- SetPixelRed(tile_image,ScaleCharToQuantum(data),q);
- if (inDocInfo->image_type == GIMP_GRAY)
+ if (inDocInfo->image_type != GIMP_GRAY)
{
+ SetPixelRed(tile_image,ScaleCharToQuantum(data),q);
SetPixelGreen(tile_image,ScaleCharToQuantum(data),q);
SetPixelBlue(tile_image,ScaleCharToQuantum(data),q);
SetPixelAlpha(tile_image,ScaleCharToQuantum(
@@ -541,8 +538,7 @@
}
else
{
- SetPixelGreen(tile_image,GetPixelRed(image,q),q);
- SetPixelBlue(tile_image,GetPixelRed(image,q),q);
+ SetPixelGray(tile_image,ScaleCharToQuantum(data),q);
SetPixelAlpha(tile_image,ScaleCharToQuantum(
(unsigned char) inLayerInfo->alpha),q);
}