% June 2001 %
% %
% %
-% Copyright 1999-2017 ImageMagick Studio LLC, a non-profit organization %
+% Copyright 1999-2018 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. You may %
(jp2_image->comps[0].dy != jp2_image->comps[i].dy) ||
(jp2_image->comps[0].prec != jp2_image->comps[i].prec) ||
(jp2_image->comps[0].sgnd != jp2_image->comps[i].sgnd) ||
- (jp2_image->comps[i].data == NULL))
+ ((image->ping == MagickFalse) && (jp2_image->comps[i].data == NULL)))
{
opj_destroy_codec(jp2_codec);
opj_image_destroy(jp2_image);
if (status == MagickFalse)
return(DestroyImageList(image));
image->compression=JPEG2000Compression;
- if (jp2_image->color_space == 2)
- {
- SetImageColorspace(image,GRAYColorspace,exception);
- if (jp2_image->numcomps > 1)
- image->alpha_trait=BlendPixelTrait;
- }
+ if (jp2_image->numcomps == 1)
+ SetImageColorspace(image,GRAYColorspace,exception);
else
- if (jp2_image->color_space == 3)
- SetImageColorspace(image,Rec601YCbCrColorspace,exception);
+ if (jp2_image->color_space == 2)
+ {
+ SetImageColorspace(image,GRAYColorspace,exception);
+ if (jp2_image->numcomps > 1)
+ image->alpha_trait=BlendPixelTrait;
+ }
+ else
+ if (jp2_image->color_space == 3)
+ SetImageColorspace(image,Rec601YCbCrColorspace,exception);
if (jp2_image->numcomps > 3)
image->alpha_trait=BlendPixelTrait;
if (jp2_image->icc_profile_buf != (unsigned char *) NULL)
{
case 0:
{
+ if (jp2_image->numcomps == 1)
+ {
+ SetPixelGray(image,ClampToQuantum(pixel),q);
+ SetPixelAlpha(image,OpaqueAlpha,q);
+ break;
+ }
SetPixelRed(image,ClampToQuantum(pixel),q);
SetPixelGreen(image,ClampToQuantum(pixel),q);
SetPixelBlue(image,ClampToQuantum(pixel),q);
¶meters.subsampling_dx,¶meters.subsampling_dy);
property=GetImageProperty(image,"comment",exception);
if (property != (const char *) NULL)
- parameters.cp_comment=ConstantString(property);
+ parameters.cp_comment=(char *) property;
channels=3;
jp2_colorspace=OPJ_CLRSPC_SRGB;
if (image->colorspace == YUVColorspace)
{
if (jp2_colorspace == OPJ_CLRSPC_GRAY)
{
- *q=(int) (scale*GetPixelLuma(image,p));
+ *q=(int) (scale*GetPixelGray(image,p));
break;
}
*q=(int) (scale*GetPixelRed(image,p));