[ka-Map-users] Ka-map and AGG?
Sacha Black
sacha.black at gmail.com
Tue Mar 4 18:51:28 EST 2008
Hi Paul,
your code works as written (when i tested separately), except that it
seems that it might be the subsequent event in tile.php that causes
the transparency of a true color + alpha image to be killed :
imagecopy( $oTile, $oGDImg, 0, 0, $tileLeft, $tileTop, $tileWidth,
$tileHeight );
I found reference in the PHP manual comments for imagecopy to similar problem:
http://us3.php.net/manual/en/function.imagecopy.php (scroll down to
see somments)
so I wasn't sure what a full solution would be. I did find that this
works (sort of):
tile.php (around line 313) :
if ($useAlphaCh) {
imageAlphaBlending($oTile, false);
imagefill($oTile, 0, 0, imagecolorallocatealpha($oTile, 0, 0, 0, 127));
imageSaveAlpha($oTile, true);
}
$nTransparent = imagecolorallocate($oTile, 0, 0, 0); //////
added these 2 lines
imagecolortransparent( $oTile,$nTransparent); ////// to
kill black background
imagecopy( $oTile, $oGDImg, 0, 0, $tileLeft, $tileTop, $tileWidth,
$tileHeight );
but this is not a great/perfect fix:
- it preserves the rendering but it also causes black pixels in the
map tiles to go transparent. (because index transparency is covering
when alpha transparency fails to black in the imagecopy).
- overlay layers that are mostly transparent fare worse because the
remaining features will have a dark fuzzy outline due to the effects
of antialiasing. (so these types of overlay layers should stick with
regular 8bit png).
maybe someone else has a better idea how to work around the RGBA and
imagecopy() issue?
Sacha
On Tue, Mar 4, 2008 at 6:13 AM, Paul Spencer <pspencer at dmsolutions.ca> wrote:
> I think there is a small issue in tile.php, we need to change the
> following block around line 313:
>
> if ($useAlphaCh) {
> ImageAlphaBlending($oTile, false);
> imagesavealpha($oTile, true);
> }
>
> to:
>
> if ($useAlphaCh) {
> imagefill($oTile, 0, 0, imagecolorallocatealpha($oTile, 0, 0, 0,
> 127));
> ImageAlphaBlending($oTile, false);
> imagesavealpha($oTile, true);
> }
>
> Note the addition of the imagefill - this is critical to making the
> tiles come out transparent. I'm pretty sure this works. What I don't
> know is what happens if you replace the color black (0,0,0) with the
> map's background color ($oMap->imagecolor->red, $oMap->imagecolor-
> >green, $oMap->imagecolor->blue).
>
> If someone could test this and confirm it works, we can commit
> tile.php with the change.
>
> Cheers
>
> Paul
>
>
>
> On 4-Mar-08, at 2:32 AM, Sacha Black wrote:
>
> > Hi Hans,
> >
> > I reproduced your error. :( in ms4w 2.2.7
> >
> > Maybe I missed this before because I was just testing with gmap, and
> > my bounds didn't go outside the edge of the base data. The AGGA
> > rendering looks good like you say, and that's what I saw, but with
> > black outside the base data.
> >
> > But I don't know why it's happening. I added TRANSPARENT ON to the
> > OUTPUTFORMAT and it made no difference like this:
> >
> > OUTPUTFORMAT
> > NAME 'AGGA'
> > DRIVER AGG/PNG
> > IMAGEMODE RGBA
> > TRANSPARENT ON ////// <- no difference with this ?
> > END
> >
> > Also tried to add TRANSPARENCY alpha to all the layers, and no
> > change.
> >
> > it seems that when the tiles get created from the RGBA pngs, they are
> > losing the transparency. I'm not sure where this is happening. We
> > can't change the $GLOBALS['szImageCreateFunction'] back to
> > "imagecreate" from "imagecreatetruecolor"because this will create an
> > 8bit PNG tile, and you will lose the extra colors in the downgrade.
> > Although appaently the 8 bit PNG has no problem with retaining
> > transparency.....
> >
> >> From your example attachment it looks like maybe your overlays will
> > suffice with just AGG ? did you try it:
> >
> > OUTPUTFORMAT
> > NAME 'AGG'
> > DRIVER AGG/PNG
> > IMAGEMODE RGB
> > END
> >
> > The tiles will be smaller in size and transparency is retained in my
> > tests. It's not a real solution, but it might help your situation
> > while we figure out why AGGA is not right.
> >
> > Sacha
> >
> >
> > On Mon, Mar 3, 2008 at 10:59 AM, Hans Castorp
> > <hanscastorp76 at yahoo.es> wrote:
> >> Hi Lorenzo,
> >>
> >> Yes, I have created OUTPUTFORMAT AGGA in my mapfile.
> >>
> >> I you refer to put METADATA imageformat "agga", yes I did it.
> >> Despite of it,
> >> reading th documentation, only values accepted for imageformat are:
> >> "imageformat" [DITHERED|PNG24|PNG|JPEG|GIF]
> >>
> >> And yes, I'm using MS4W...
> >>
> >> -----Mensaje original-----
> >> De: Lorenzo Becchi [mailto:lorenzo at ominiverdi.com]
> >> Enviado el: lunes, 03 de marzo de 2008 19:51
> >> Para: Hans Castorp
> >> CC: 'Sacha Black'; ka-map-users at lists.maptools.org
> >>
> >>
> >> Asunto: Re: [ka-Map-users] Ka-map and AGG?
> >>
> >> Hans,
> >> have you created the OUTPUTFORMAT AGGA in your mapfile?
> >> have you put MEDATA format "AGGA" to your layer's metadata?
> >>
> >>
> >> another problem could be that it seems you're using MS4W.
> >> I've tested on Mac OS X and I guess Sacha did it in Linux. Am I
> >> wrong?
> >> hopefully, I am
> >>
> >> ciao
> >> Lorenzo
> >>
> >>
> >>
> >> Hans Castorp wrote:
> >>> Hi,
> >>>
> >>> Using your configuration my transparent layers are rendered with
> >>> Black
> >>> background (as you can see in the attachment)... First time I see
> >>> it...
> >>>
> >>> I was suffering several troubles trying to achieve a good agg
> >>> redering.
> >> With
> >>> your configuration all seems to work fine but this "little"
> >>> trouble :) All
> >> I
> >>> have to do is change this black background into transparent...
> >>>
> >>> Only a couple of questions:
> >>>
> >>> I am using IMAGETYPE AGGA in my map section, is it right???
> >>>
> >>>
> >>> I am also using 'format' =>'AGGA' in my config.php file:
> >>>
> >>> $aszGMap = array (
> >>> 'title' => 'gmap',
> >>> 'path' => 'C:/ms4w/apps/ka-m1.0/mapdata/xxx/xxx.map',
> >>> 'scales' => array( 200000, 150000, 100000, 50000, 25000 ,
> >>> 10000,
> >>> 5000 ),
> >>> 'format' =>'AGGA'
> >>> );
> >>>
> >>> Is it right too?
> >>>
> >>> Thanks in advance.
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> -----Mensaje original-----
> >>> De: Sacha Black [mailto:sacha.black at gmail.com]
> >>> Enviado el: lunes, 03 de marzo de 2008 18:09
> >>> Para: Hans Castorp
> >>> CC: Lorenzo Becchi; ka-map-users at lists.maptools.org
> >>> Asunto: Re: [ka-Map-users] Ka-map and AGG?
> >>>
> >>> Hans,
> >>>
> >>> The corrections I made for Lorenzo are only typos.....
> >>>
> >>> check to see if your OUTPUFORMAT settings are like this (or else
> >>> they
> >>> will not match the settings in config.php):
> >>>
> >>> OUTPUTFORMAT
> >>> NAME 'AGG'
> >>> DRIVER AGG/PNG
> >>> IMAGEMODE RGB
> >>> END
> >>>
> >>> OUTPUTFORMAT
> >>> NAME 'AGGA'
> >>> DRIVER AGG/PNG
> >>> IMAGEMODE RGBA
> >>> END
> >>>
> >>> OUTPUTFORMAT
> >>> NAME 'AGG_JPEG'
> >>> DRIVER AGG/JPEG
> >>> IMAGEMODE RGB
> >>> END
> >>>
> >>> Sacha
> >>>
> >>>
> >>>
> >>> On Mon, Mar 3, 2008 at 12:51 AM, Hans Castorp <hanscastorp76 at yahoo.es
> >>> >
> >>> wrote:
> >>>
> >>>> Making these 2 changes, my map looses transparency and all layers
> >>>> are
> >>>>
> >>> drawn
> >>>
> >>>> with black background...
> >>>>
> >>>>
> >>>> -----Mensaje original-----
> >>>> De: ka-map-users-bounces at lists.maptools.org
> >>>> [mailto:ka-map-users-bounces at lists.maptools.org] En nombre de
> >>>> Lorenzo
> >>>>
> >>> Becchi
> >>>
> >>>> Enviado el: viernes, 29 de febrero de 2008 22:54
> >>>> Para: Sacha Black
> >>>> CC: ka-map-users at lists.maptools.org
> >>>> Asunto: Re: [ka-Map-users] Ka-map and AGG?
> >>>>
> >>>>
> >>>>
> >>>> lovely, thanks
> >>>> :-)
> >>>>
> >>>> I've updated CVS
> >>>>
> >>>> Lorenzo
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> Sacha Black wrote:
> >>>>> Hi Lorenzo,
> >>>>>
> >>>>> I've tested what you sent, and there are two corrections (see the
> >>>>> ////// comments below):
> >>>>>
> >>>>> case "AGGA":
> >>>>> $GLOBALS['szMapImageFormat'] = 'AGGA';
> >>>>> $GLOBALS['szMapImageCreateFunction'] = "imagecreatefrompng";
> >>>>> $GLOBALS['szImageExtension'] = '.png';
> >>>>> $GLOBALS['szImageCreateFunction'] =
> >>>>> "imagecreatetruecolor"; /////
> >>>>> <-- not 'imagecreate'
> >>>>> $GLOBALS['szImageOutputFunction'] = "imagepng";
> >>>>> $GLOBALS['szImageHeader'] = 'image/png';
> >>>>> break;
> >>>>>
> >>>>> case "AGG_JPEG":
> >>>>> $GLOBALS['szMapImageFormat'] = 'JPEG';
> >>>>> $GLOBALS['szMapImageCreateFunction'] = "imagecreatefromjpeg";
> >>>>> $GLOBALS['szImageExtension'] = '.jpg';
> >>>>> $GLOBALS['szImageCreateFunction'] = "imagecreatetruecolor";
> >>>>> $GLOBALS['szImageOutputFunction'] = "imagejpeg"; ///// <-- not
> >>>> 'imagejpg'
> >>>>> $GLOBALS['szImageHeader'] = 'image/jpeg';
> >>>>> break;
> >>>>>
> >>>>> With these 2 corrections, everything works as expected.
> >>>>>
> >>>>> thanks,
> >>>>>
> >>>>> Sacha
> >>>>>
> >>>>>
> >>>>> On Sun, Feb 24, 2008 at 1:07 PM, Lorenzo Becchi
> >>>>
> >>> <lorenzo at ominiverdi.com>
> >>>
> >>>> wrote:
> >>>>>
> >>>>>
> >>>>>> Hi Sasha,
> >>>>>> it seems to me it should work.
> >>>>>>
> >>>>>> I've set the outputformats as suggested by this page:
> >>>>>> http://mapserver.gis.umn.edu/docs/howto/agg-rendering-specifics
> >>>>>>
> >>>>>> then I've set LAYER's METADATA
> >>>>>> imageformat "AGGA"
> >>>>>>
> >>>>>> seems to me, it didn't worked until I've not changed config.php
> >>>>>> with
> >>>>>> this lines:
> >>>>>>
> >>>>>> case "AGG":
> >>>>>> $GLOBALS['szMapImageFormat'] = 'PNG';
> >>>>>> $GLOBALS['szMapImageCreateFunction'] =
> >>>>
> >>> "imagecreatefrompng";
> >>>
> >>>>>> $GLOBALS['szImageExtension'] = '.png';
> >>>>>> $GLOBALS['szImageCreateFunction'] = "imagecreate";
> >>>>>> $GLOBALS['szImageOutputFunction'] = "imagepng";
> >>>>>> $GLOBALS['szImageHeader'] = 'image/png';
> >>>>>> break;
> >>>>>> case "AGGA":
> >>>>>> $GLOBALS['szMapImageFormat'] = 'AGGA';
> >>>>>> $GLOBALS['szMapImageCreateFunction'] =
> >>>>
> >>> "imagecreatefrompng";
> >>>
> >>>>>> $GLOBALS['szImageExtension'] = '.png';
> >>>>>> $GLOBALS['szImageCreateFunction'] = "imagecreate";
> >>>>>> $GLOBALS['szImageOutputFunction'] = "imagepng";
> >>>>>> $GLOBALS['szImageHeader'] = 'image/png';
> >>>>>> break;
> >>>>>> case "AGG_JPEG":
> >>>>>> $GLOBALS['szMapImageFormat'] = 'JPEG';
> >>>>>> $GLOBALS['szMapImageCreateFunction'] =
> >>>>
> >>> "imagecreatefromjpeg";
> >>>
> >>>>>> $GLOBALS['szImageExtension'] = '.jpg';
> >>>>>> $GLOBALS['szImageCreateFunction'] =
> >>>>
> >>> "imagecreatetruecolor";
> >>>
> >>>>>> $GLOBALS['szImageOutputFunction'] = "imagejpg";
> >>>>>> $GLOBALS['szImageHeader'] = 'image/jpeg';
> >>>>>> break;
> >>>>>>
> >>>>>>
> >>>>>> I've tested only
> >>>>>> AGGA
> >>>>>>
> >>>>>> can you please do some more tests?
> >>>>>>
> >>>>>> once confirmed I'll post changes on CVS
> >>>>>>
> >>>>>> thanks
> >>>>>> Lorenzo
> >>>>>>
> >>>>>>
> >>>>>>
> >>>> _______________________________________________
> >>>> ka-Map-users mailing list
> >>>> ka-Map-users at lists.maptools.org
> >>>> http://lists.maptools.org/mailman/listinfo/ka-map-users
> >>>>
> >>>> No virus found in this incoming message.
> >>>> Checked by AVG Free Edition.
> >>>> Version: 7.5.516 / Virus Database: 269.21.3/1307 - Release Date:
> >>>>
> >>> 02/03/2008
> >>>
> >>>> 15:59
> >>>>
> >>>>
> >>>> No virus found in this outgoing message.
> >>>> Checked by AVG Free Edition.
> >>>> Version: 7.5.516 / Virus Database: 269.21.3/1307 - Release Date:
> >>>>
> >>> 02/03/2008
> >>>
> >>>> 15:59
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>> No virus found in this incoming message.
> >>> Checked by AVG Free Edition.
> >>> Version: 7.5.516 / Virus Database: 269.21.3/1307 - Release Date:
> >> 02/03/2008
> >>> 15:59
> >>>
> >>>
> >>> No virus found in this outgoing message.
> >>> Checked by AVG Free Edition.
> >>> Version: 7.5.516 / Virus Database: 269.21.3/1307 - Release Date:
> >> 02/03/2008
> >>> 15:59
> >>>
> >>>
> >>>
> >>>
> >>> ------------------------------------------------------------------------
> >>>
> >>
> >> No virus found in this incoming message.
> >> Checked by AVG Free Edition.
> >> Version: 7.5.516 / Virus Database: 269.21.3/1307 - Release Date:
> >> 02/03/2008
> >> 15:59
> >>
> >>
> >> No virus found in this outgoing message.
> >> Checked by AVG Free Edition.
> >> Version: 7.5.516 / Virus Database: 269.21.3/1307 - Release Date:
> >> 02/03/2008
> >> 15:59
> >>
> >>
> >>
> >>
> > _______________________________________________
> > ka-Map-users mailing list
> > ka-Map-users at lists.maptools.org
> > http://lists.maptools.org/mailman/listinfo/ka-map-users
>
>
> __________________________________________
>
> Paul Spencer
> Chief Technology Officer
> DM Solutions Group Inc
> http://www.dmsolutions.ca/
>
>
More information about the ka-Map-users
mailing list