Changeset 8047


Ignore:
Timestamp:
05/24/12 14:47:10 (12 months ago)
Author:
cristy
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • ImageMagick/trunk/coders/jp2.c

    r8045 r8047  
    448448      components[1]=jas_image_getcmptbytype(jp2_image,JAS_IMAGE_CT_YCBCR_CB); 
    449449      components[2]=jas_image_getcmptbytype(jp2_image,JAS_IMAGE_CT_YCBCR_CR); 
     450      if ((components[0] < 0) || (components[1] < 0) || (components[2] < 0)) 
     451        { 
     452          (void) jas_stream_close(jp2_stream); 
     453          jas_image_destroy(jp2_image); 
     454          ThrowReaderException(CorruptImageError,"MissingImageChannel"); 
     455        } 
     456      number_components=3; 
     457      components[3]=jas_image_getcmptbytype(jp2_image,JAS_IMAGE_CT_UNKNOWN); 
     458      if (components[3] > 0) 
     459        { 
     460          image->matte=MagickTrue; 
     461          number_components++; 
     462        } 
     463      break; 
     464    } 
     465    case JAS_CLRSPC_FAM_XYZ: 
     466    { 
     467      SetImageColorspace(image,XYZColorspace,exception); 
     468      components[0]=jas_image_getcmptbytype(jp2_image,0); 
     469      components[1]=jas_image_getcmptbytype(jp2_image,1); 
     470      components[2]=jas_image_getcmptbytype(jp2_image,2); 
     471      if ((components[0] < 0) || (components[1] < 0) || (components[2] < 0)) 
     472        { 
     473          (void) jas_stream_close(jp2_stream); 
     474          jas_image_destroy(jp2_image); 
     475          ThrowReaderException(CorruptImageError,"MissingImageChannel"); 
     476        } 
     477      number_components=3; 
     478      components[3]=jas_image_getcmptbytype(jp2_image,JAS_IMAGE_CT_UNKNOWN); 
     479      if (components[3] > 0) 
     480        { 
     481          image->matte=MagickTrue; 
     482          number_components++; 
     483        } 
     484      break; 
     485    } 
     486    case JAS_CLRSPC_FAM_LAB: 
     487    { 
     488      SetImageColorspace(image,LabColorspace,exception); 
     489      components[0]=jas_image_getcmptbytype(jp2_image,0); 
     490      components[1]=jas_image_getcmptbytype(jp2_image,1); 
     491      components[2]=jas_image_getcmptbytype(jp2_image,2); 
    450492      if ((components[0] < 0) || (components[1] < 0) || (components[2] < 0)) 
    451493        { 
     
    876918    ThrowWriterException(DelegateError,"UnableToManageJP2Stream"); 
    877919  number_components=image->matte ? 4UL : 3UL; 
    878   if ((image_info->type != TrueColorType) && 
    879       (IsImageGray(image,exception) != MagickFalse)) 
     920  if (IsGrayColorspace(image->colorspace) != MagickFalse) 
    880921    number_components=1; 
    881922  if ((image->columns != (unsigned int) image->columns) || 
     
    898939  if (jp2_image == (jas_image_t *) NULL) 
    899940    ThrowWriterException(DelegateError,"UnableToCreateImage"); 
    900   if (number_components == 1) 
     941  switch (image->colorspace) 
     942  { 
     943    case RGBColorspace: 
     944    case sRGBColorspace: 
    901945    { 
    902946      /* 
    903         sRGB Grayscale. 
    904       */ 
    905       jas_image_setclrspc(jp2_image,JAS_CLRSPC_SGRAY); 
    906       jas_image_setcmpttype(jp2_image,0, 
    907         JAS_IMAGE_CT_COLOR(JAS_CLRSPC_CHANIND_GRAY_Y)); 
    908     } 
    909   else 
    910     { 
    911       /* 
    912         sRGB. 
     947        RGB. 
    913948      */ 
    914949      jas_image_setclrspc(jp2_image,JAS_CLRSPC_SRGB); 
     
    921956      if (number_components == 4) 
    922957        jas_image_setcmpttype(jp2_image,3,JAS_IMAGE_CT_OPACITY); 
    923     } 
     958      break; 
     959    } 
     960    case GRAYColorspace: 
     961    { 
     962      /* 
     963        Grayscale. 
     964      */ 
     965      jas_image_setclrspc(jp2_image,JAS_CLRSPC_SGRAY); 
     966      jas_image_setcmpttype(jp2_image,0, 
     967        JAS_IMAGE_CT_COLOR(JAS_CLRSPC_CHANIND_GRAY_Y)); 
     968      break; 
     969    } 
     970    case YCbCrColorspace: 
     971    { 
     972      /* 
     973        YCbCr. 
     974      */ 
     975      jas_image_setclrspc(jp2_image,JAS_CLRSPC_SYCBCR); 
     976      jas_image_setcmpttype(jp2_image,0,(jas_image_cmpttype_t) 
     977        JAS_IMAGE_CT_COLOR(0)); 
     978      jas_image_setcmpttype(jp2_image,1,(jas_image_cmpttype_t) 
     979        JAS_IMAGE_CT_COLOR(1)); 
     980      jas_image_setcmpttype(jp2_image,2,(jas_image_cmpttype_t) 
     981        JAS_IMAGE_CT_COLOR(2)); 
     982      if (number_components == 4) 
     983        jas_image_setcmpttype(jp2_image,3,JAS_IMAGE_CT_OPACITY); 
     984      break; 
     985    } 
     986    case XYZColorspace: 
     987    { 
     988      /* 
     989        YCbCr. 
     990      */ 
     991      jas_image_setclrspc(jp2_image,JAS_CLRSPC_CIEXYZ); 
     992      jas_image_setcmpttype(jp2_image,0,(jas_image_cmpttype_t) 
     993        JAS_IMAGE_CT_COLOR(0)); 
     994      jas_image_setcmpttype(jp2_image,1,(jas_image_cmpttype_t) 
     995        JAS_IMAGE_CT_COLOR(1)); 
     996      jas_image_setcmpttype(jp2_image,2,(jas_image_cmpttype_t) 
     997        JAS_IMAGE_CT_COLOR(2)); 
     998      if (number_components == 4) 
     999        jas_image_setcmpttype(jp2_image,3,JAS_IMAGE_CT_OPACITY); 
     1000      break; 
     1001    } 
     1002    case LabColorspace: 
     1003    { 
     1004      /* 
     1005        Lab. 
     1006      */ 
     1007      jas_image_setclrspc(jp2_image,JAS_CLRSPC_CIELAB); 
     1008      jas_image_setcmpttype(jp2_image,0,(jas_image_cmpttype_t) 
     1009        JAS_IMAGE_CT_COLOR(0)); 
     1010      jas_image_setcmpttype(jp2_image,1,(jas_image_cmpttype_t) 
     1011        JAS_IMAGE_CT_COLOR(1)); 
     1012      jas_image_setcmpttype(jp2_image,2,(jas_image_cmpttype_t) 
     1013        JAS_IMAGE_CT_COLOR(2)); 
     1014      if (number_components == 4) 
     1015        jas_image_setcmpttype(jp2_image,3,JAS_IMAGE_CT_OPACITY); 
     1016      break; 
     1017    } 
     1018    default: 
     1019    { 
     1020      /* 
     1021        Unknow. 
     1022      */ 
     1023      jas_image_setclrspc(jp2_image,JAS_CLRSPC_UNKNOWN); 
     1024      jas_image_setcmpttype(jp2_image,0,(jas_image_cmpttype_t) 
     1025        JAS_IMAGE_CT_COLOR(0)); 
     1026      jas_image_setcmpttype(jp2_image,1,(jas_image_cmpttype_t) 
     1027        JAS_IMAGE_CT_COLOR(1)); 
     1028      jas_image_setcmpttype(jp2_image,2,(jas_image_cmpttype_t) 
     1029        JAS_IMAGE_CT_COLOR(2)); 
     1030      if (number_components == 4) 
     1031        jas_image_setcmpttype(jp2_image,3,JAS_IMAGE_CT_OPACITY); 
     1032      break; 
     1033    } 
     1034  } 
    9241035  /* 
    9251036    Convert to JPEG 2000 pixels. 
Note: See TracChangeset for help on using the changeset viewer.