mirror of
				https://github.com/michaelrsweet/pdfio.git
				synced 2025-10-31 02:15:48 +01:00 
			
		
		
		
	Fix image writing issues for pdfioFileCreateImageObjFromData (Issue #15)
This commit is contained in:
		| @@ -1694,7 +1694,8 @@ pdfioFileCreateImageObjFromData( | ||||
|     pdfioDictSetNumber(dict, "Width", width); | ||||
|     pdfioDictSetNumber(dict, "Height", height); | ||||
|     pdfioDictSetNumber(dict, "BitsPerComponent", 8); | ||||
|     pdfioDictSetBoolean(dict, "ImageMask", true); | ||||
|     pdfioDictSetName(dict, "ColorSpace", "DeviceGray"); | ||||
|     pdfioDictSetName(dict, "Filter", "FlateDecode"); | ||||
|  | ||||
|     if ((decode = pdfioDictCreate(pdf)) == NULL) | ||||
|     { | ||||
| @@ -1703,7 +1704,7 @@ pdfioFileCreateImageObjFromData( | ||||
|     } | ||||
|  | ||||
|     pdfioDictSetNumber(decode, "BitsPerComponent", 8); | ||||
|     pdfioDictSetNumber(decode, "Colors", num_colors - 1); | ||||
|     pdfioDictSetNumber(decode, "Colors", 1); | ||||
|     pdfioDictSetNumber(decode, "Columns", width); | ||||
|     pdfioDictSetNumber(decode, "Predictor", _PDFIO_PREDICTOR_PNG_AUTO); | ||||
|     pdfioDictSetDict(dict, "DecodeParms", decode); | ||||
| @@ -1746,6 +1747,7 @@ pdfioFileCreateImageObjFromData( | ||||
|   pdfioDictSetNumber(dict, "Width", width); | ||||
|   pdfioDictSetNumber(dict, "Height", height); | ||||
|   pdfioDictSetNumber(dict, "BitsPerComponent", 8); | ||||
|   pdfioDictSetName(dict, "Filter", "FlateDecode"); | ||||
|  | ||||
|   if (color_data) | ||||
|     pdfioDictSetArray(dict, "ColorSpace", color_data); | ||||
|   | ||||
							
								
								
									
										23
									
								
								testpdfio.c
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								testpdfio.c
									
									
									
									
									
								
							| @@ -772,7 +772,10 @@ write_alpha_test( | ||||
| 	      if (i > 2) | ||||
| 	      { | ||||
| 	        // Add alpha channel | ||||
| 	        *bufptr++ = (unsigned char)((x + y) / 2); | ||||
| 	        if (x < 112 || x >= 144 || y < 112 || y >= 144) | ||||
| 		  *bufptr++ = (unsigned char)((x - 128) * (y - 128)); | ||||
| 		else | ||||
| 		  *bufptr++ = 0; | ||||
| 	      } | ||||
| 	    } | ||||
| 	  } | ||||
| @@ -792,7 +795,10 @@ write_alpha_test( | ||||
| 	      if (i > 2) | ||||
| 	      { | ||||
| 	        // Add alpha channel | ||||
| 	        *bufptr++ = (unsigned char)((x + y) / 2); | ||||
| 	        if (x < 112 || x >= 144 || y < 112 || y >= 144) | ||||
| 		  *bufptr++ = (unsigned char)((x - 128) * (y - 128)); | ||||
| 		else | ||||
| 		  *bufptr++ = 0; | ||||
| 	      } | ||||
| 	    } | ||||
| 	  } | ||||
| @@ -817,7 +823,10 @@ write_alpha_test( | ||||
| 	      if (i > 2) | ||||
| 	      { | ||||
| 	        // Add alpha channel | ||||
| 	        *bufptr++ = (unsigned char)((x + y) / 2); | ||||
| 	        if (x < 112 || x >= 144 || y < 112 || y >= 144) | ||||
| 		  *bufptr++ = (unsigned char)((x - 128) * (y - 128)); | ||||
| 		else | ||||
| 		  *bufptr++ = 0; | ||||
| 	      } | ||||
| 	    } | ||||
| 	  } | ||||
| @@ -828,7 +837,7 @@ write_alpha_test( | ||||
|     printf("pdfioFileCreateImageObjFromData(num_colors=%u, alpha=%s): ", (unsigned)num_colors, i > 2 ? "true" : "false"); | ||||
|     if ((images[i] = pdfioFileCreateImageObjFromData(pdf, buffer, 256, 256, num_colors, NULL, i > 2, false)) != NULL) | ||||
|     { | ||||
|       puts("PASS"); | ||||
|       printf("PASS (%u)\n", (unsigned)pdfioObjGetNumber(images[i])); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
| @@ -877,9 +886,9 @@ write_alpha_test( | ||||
|       "DeviceGray", | ||||
|       "DeviceRGB", | ||||
|       "DeviceCMYK", | ||||
|       "DeviceGray + Alpha", | ||||
|       "DeviceRGB + Alpha", | ||||
|       "DeviceCMYK + Alpha" | ||||
|       "DevGray + Alpha", | ||||
|       "DevRGB + Alpha", | ||||
|       "DevCMYK + Alpha" | ||||
|     }; | ||||
|  | ||||
|     snprintf(iname, sizeof(iname), "IM%d", i + 1); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user