[Mapbender-dev] weldMaps2PNG,
transparency issues (multiple adding of PNG to PDF) (UPDATE)
Marc Jansen
jansen.marc at gmx.de
Thu Jan 11 08:14:06 EST 2007
Hey List,
As there seem to be no real issues with this, I suggest somebody with
SVN-writting access might add these lines (see below a copied message).
Furthermore I'd like to suggest to use PHPs function imagedestroy (e.g.
http://de2.php.net/imagedestroy), to clean up memory after image
creation. I know that it's all done by PHP itself after script execution
stopped, but I think we shouldn't be to messy and free most of the
memory we occupated by ourselves ;-)
This would mean changing this code:
// old
imagecopy($image, $img, 0, 0, 0, 0, $width, $height);
To:
// new
imagecopy($image, $img, 0, 0, 0, 0, $width, $height);
@imagedestroy($img);
And the change of this line:
// old
imagepng($image,$filename);
To:
// old
imagepng($image,$filename);
imagedestroy($image);
Any more opinions?
-- Marc
Marc Jansen schrieb:
> Hi list,
>
> today I encountered some problems with transparency in the class
> weldMaps2PNG.
>
> My problem was that I was forced to run the image-creation-class
> within the printing module several times for one PDF. I added some
> welded maps to the PDF and afterwards I had to add some more welded
> maps. With the default settings in this class the module creates a
> white image of given size and adds the single images (some might be
> transparent) of the request URLs to this image.
>
> Without changes, it was impossible to simply create the second bunch
> of maps and to just add them to the PDF, as the background of the
> images is white and not transparent.
>
> I fixed this issue by replacing some of the lines in the class
> weldMaps2PNG (in the constructor-function):
>
> old code:
> ------------------------------------------------------------
> $image = imagecreatetruecolor($width, $height);
> $white = ImageColorAllocate($image,255,255,255);
> ImageFilledRectangle($image,0,0,$width,$height,$white);
> ------------------------------------------------------------
>
> new code:
> ------------------------------------------------------------
> // do not use imagecreatetruecolor,
> // as the currently used PDF-creation-class
> // has some problems with this 24-bit PNGs
> $image = imagecreate($width, $height );
> // allocate a color as usual
> $white = imagecolorallocate($image,255,255,255);
> // set this color to transparent
> // no need to draw a rectangle in my case
> $white = imagecolortransparent($image, $white);
> ------------------------------------------------------------
>
> As for programming semantics and self-explaining code one might
> consider to rename the variable $white to $transparent... ;-)
>
> Are there any opinions about this issue?
>
> -- Marc
>
>
More information about the Mapbender_dev
mailing list