Recently I’ve updated purePDF to a new version fixing one bug which caused problems with PNG images.
However when you’re trying to add BitmapData with transparency to a pdf document you probably get black backgrounds to your images. This is because internaly purePDF converts bitmapdata into 24bit tiff images, so no alpha informations.
This is a script you can use to convert your BitmapData images into transparent pdf ImageElements:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | /** * Create a transparent ImageElement * * An ImageElement with the input bitmapdata RGB informations will be * created and an ImageElement will be used as mask ( using the alpha info from the bitmapdata ) * If the input bitmapdata is not transparent a regular ImageElement will be returned. */ protected function createTransparentImageElement( bitmap: BitmapData ): ImageElement { var output: ByteArray = new ByteArray(); var transparency: ByteArray = new ByteArray(); var input: ByteArray = bitmap.getPixels( bitmap.rect ); input.position = 0; while( input.bytesAvailable ){ const pixel: uint = input.readInt(); // write the RGB informations output.writeByte( (pixel >> 16) & 0xff ); output.writeByte( (pixel >> 8) & 0xff ); output.writeByte( (pixel >> 0) & 0xff ); // write the alpha informations transparency.writeByte( (pixel >> 24) & 0xff ); } output.position = 0; transparency.position = 0; var mask: ImageElement = ImageElement.getRawInstance( bitmap.width, bitmap.height, 1, 8, transparency, null ); var image: ImageElement = ImageElement.getRawInstance( bitmap.width, bitmap.height, 3, 8, output, null ); if( bitmap.transparent ) { mask.makeMask(); image.imageMask = mask; } return image; } |
and here there’s a demo app: http://bit.ly/dOT2ob