Changeset 8047
- Timestamp:
- 05/24/12 14:47:10 (12 months ago)
- File:
-
- 1 edited
-
ImageMagick/trunk/coders/jp2.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ImageMagick/trunk/coders/jp2.c
r8045 r8047 448 448 components[1]=jas_image_getcmptbytype(jp2_image,JAS_IMAGE_CT_YCBCR_CB); 449 449 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); 450 492 if ((components[0] < 0) || (components[1] < 0) || (components[2] < 0)) 451 493 { … … 876 918 ThrowWriterException(DelegateError,"UnableToManageJP2Stream"); 877 919 number_components=image->matte ? 4UL : 3UL; 878 if ((image_info->type != TrueColorType) && 879 (IsImageGray(image,exception) != MagickFalse)) 920 if (IsGrayColorspace(image->colorspace) != MagickFalse) 880 921 number_components=1; 881 922 if ((image->columns != (unsigned int) image->columns) || … … 898 939 if (jp2_image == (jas_image_t *) NULL) 899 940 ThrowWriterException(DelegateError,"UnableToCreateImage"); 900 if (number_components == 1) 941 switch (image->colorspace) 942 { 943 case RGBColorspace: 944 case sRGBColorspace: 901 945 { 902 946 /* 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. 913 948 */ 914 949 jas_image_setclrspc(jp2_image,JAS_CLRSPC_SRGB); … … 921 956 if (number_components == 4) 922 957 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 } 924 1035 /* 925 1036 Convert to JPEG 2000 pixels.
Note: See TracChangeset
for help on using the changeset viewer.
