hello, i've been trying to produce nicely graphics with nice anti-aliased edges (provided by a proper alpha channel using .PNG files) i've got two files which you can see at [a href=\"http://g.is-a-geek.com/camden101\" target=\"_blank\"]http://g.is-a-geek.com/camden101[/a] my titleimage [code]<?php $strText = "Camden 101"; $strFont = "assets/ITCEDSCR.TTF"; $intFontSize = 144; $arrSize = imageTTFBBox($intFontSize, 0, $strFont, $strText); $image = imageCreateTrueColor((abs($arrSize[4]) + abs($arrSize[0])), (abs($arrSize[5]) + abs($arrSize[1]))); imageSaveAlpha($image, true); ImageAlphaBlending($image, false); $colorTransparent = imagecolorallocatealpha($image, 0, 0, 0, 127); $colorText = imageColorAllocate($image, 51, 204, 255); imagefill($image, 0, 0, $colorTransparent); imagettftext($image, $intFontSize, 0, 0, abs($arrSize[5]), $colorText, $strFont, $strText); // create an interlaced image for better loading in the browser imageInterlace($image, 1); //header("Content-type: image/png"); imagePNG($image, "assets/title.png"); imagedestroy($image); $strUserAgent = $_SERVER['HTTP_USER_AGENT']; if (strpos($strUserAgent, "MSIE 6") OR strpos($strUserAgent, "MSIE 5.5")) { echo "<img src=\"assets\\spacer.gif\" width=\"".(abs($arrSize[4]) + abs($arrSize[0]))."\" height=\"".(abs($arrSize[5]) + abs($arrSize[1]))."\" style=\"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader( src='assets/title.png', sizingMethod='image');\" alt=\"".$strText."\" border=\"0\" />"; } else { echo "<img src=\"assets\\title.png\" alt=\"".$strText."\" border=\"0\" />"; } ?>[/code] and a menu navigation [code]<?php $arrayMenuItems['Item Name'][0] = "News"; $arrayMenuItems['Item Link'][0] = "news.php"; $arrayMenuItems['Item Name'][1] = "Events"; $arrayMenuItems['Item Link'][1] = "events.php"; $arrayMenuItems['Item Name'][2] = "Reviews"; $arrayMenuItems['Item Link'][2] = "reviews.php"; $arrayMenuItems['Item Name'][3] = "Forums"; $arrayMenuItems['Item Link'][3] = "forums.php"; $arrayMenuItems['Item Name'][4] = "About"; $arrayMenuItems['Item Link'][4] = "about.php"; $strFont = "assets/BauHS93.TTF"; $intFontSize = 20; $intAngleRotation = 30; function imageSmoothCircle( &$img, $cx, $cy, $cr, $color ) { $ir = $cr; $ix = 0; $iy = $ir; $ig = 2 * $ir - 3; $idgr = -6; $idgd = 4 * $ir - 10; $fill = imageColorExactAlpha( $img, $color[ 'R' ], $color[ 'G' ], $color[ 'B' ], 0 ); imageLine( $img, $cx + $cr - 1, $cy, $cx, $cy, $fill ); imageLine( $img, $cx - $cr + 1, $cy, $cx - 1, $cy, $fill ); imageLine( $img, $cx, $cy + $cr - 1, $cx, $cy + 1, $fill ); imageLine( $img, $cx, $cy - $cr + 1, $cx, $cy - 1, $fill ); $draw = imageColorExactAlpha( $img, $color[ 'R' ], $color[ 'G' ], $color[ 'B' ], 42 ); imageSetPixel( $img, $cx + $cr, $cy, $draw ); imageSetPixel( $img, $cx - $cr, $cy, $draw ); imageSetPixel( $img, $cx, $cy + $cr, $draw ); imageSetPixel( $img, $cx, $cy - $cr, $draw ); while ( $ix <= $iy - 2 ) { if ( $ig < 0 ) { $ig += $idgd; $idgd -= 8; $iy--; } else { $ig += $idgr; $idgd -= 4; } $idgr -= 4; $ix++; imageLine( $img, $cx + $ix, $cy + $iy - 1, $cx + $ix, $cy + $ix, $fill ); imageLine( $img, $cx + $ix, $cy - $iy + 1, $cx + $ix, $cy - $ix, $fill ); imageLine( $img, $cx - $ix, $cy + $iy - 1, $cx - $ix, $cy + $ix, $fill ); imageLine( $img, $cx - $ix, $cy - $iy + 1, $cx - $ix, $cy - $ix, $fill ); imageLine( $img, $cx + $iy - 1, $cy + $ix, $cx + $ix, $cy + $ix, $fill ); imageLine( $img, $cx + $iy - 1, $cy - $ix, $cx + $ix, $cy - $ix, $fill ); imageLine( $img, $cx - $iy + 1, $cy + $ix, $cx - $ix, $cy + $ix, $fill ); imageLine( $img, $cx - $iy + 1, $cy - $ix, $cx - $ix, $cy - $ix, $fill ); $filled = 0; for ( $xx = $ix - 0.45; $xx < $ix + 0.5; $xx += 0.2 ) { for ( $yy = $iy - 0.45; $yy < $iy + 0.5; $yy += 0.2 ) { if ( sqrt( pow( $xx, 2 ) + pow( $yy, 2 ) ) < $cr ) $filled += 4; } } $draw = imageColorExactAlpha( $img, $color[ 'R' ], $color[ 'G' ], $color[ 'B' ], ( 100 - $filled ) ); imageSetPixel( $img, $cx + $ix, $cy + $iy, $draw ); imageSetPixel( $img, $cx + $ix, $cy - $iy, $draw ); imageSetPixel( $img, $cx - $ix, $cy + $iy, $draw ); imageSetPixel( $img, $cx - $ix, $cy - $iy, $draw ); imageSetPixel( $img, $cx + $iy, $cy + $ix, $draw ); imageSetPixel( $img, $cx + $iy, $cy - $ix, $draw ); imageSetPixel( $img, $cx - $iy, $cy + $ix, $draw ); imageSetPixel( $img, $cx - $iy, $cy - $ix, $draw ); } } $strTestStringDescenders = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890!£$%^&*()-=[];'#,./_+{}:@~<>?\|¬¦`"; $strTestStringNoDescenders = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefhiklmnostuvwxz1234567890"; $arrayTotalSize = imageTTFBBox($intFontSize, 0, $strFont, $strTestStringDescenders); $FontHeight = abs($arrayTotalSize[7]-$arrayTotalSize[1]); $TotalHeight = $FontHeight * Count($arrayMenuItems['Item Name']); $arrayTotalSize = imageTTFBBox($intFontSize, 0, $strFont, $strTestStringNoDescenders); $FontBase = abs($arrayTotalSize[7]-$arrayTotalSize[1]); $TotalWidth = 0; for ($i = 0; $i < Count($arrayMenuItems['Item Name']); $i++) { $arrayTotalSize = imageTTFBBox($intFontSize, 0, $strFont, $arrayMenuItems['Item Name'][$i]); if (abs($arrayTotalSize[2]-$arrayTotalSize[0]) > $TotalWidth) { $TotalWidth = abs($arrayTotalSize[2]-$arrayTotalSize[0]); } } $ImageSize = 2 * ceil(sqrt(($TotalHeight*$TotalHeight)/4 + ($TotalWidth*$TotalWidth)/4)); $image = imageCreateTrueColor($ImageSize, $ImageSize); imageSaveAlpha($image, true); ImageAlphaBlending($image, false); $colorTransparent = imagecolorallocatealpha($image, 0, 0, 0, 127); $colorBadge = imagecolorallocate($image, 255, 51, 51); $colorText = imagecolorallocate($image, 255, 255, 255); imagefill($image, 0, 0, $colorTransparent); imagefilledellipse($image, ($ImageSize/2), ($ImageSize/2), ($ImageSize-1), ($ImageSize-1), $colorBadge); //imageSmoothCircle( $image, ($ImageSize/2), ($ImageSize/2), ($ImageSize/2)-1, array( 'R' => 0xFF, 'G' => 0x33, 'B' => 0x33 ) ); echo "<map name=\"navigation\">"; for ($i = 0; $i < Count($arrayMenuItems['Item Name']); $i++) { $arrayTextSize = imageTTFBBox($intFontSize, 0, $strFont, $arrayMenuItems['Item Name'][$i]); $radAngleRotation = deg2rad($intAngleRotation); $xOffset = ($ImageSize - abs($arrayTextSize[2]-$arrayTextSize[0]))/2; $yOffset = ($ImageSize - $TotalHeight)/2 + $FontBase + $i*$FontHeight; $xRotatedOffset = ($ImageSize/2) + (cos($radAngleRotation) * ($xOffset-($ImageSize/2))) - (sin($radAngleRotation) * (($ImageSize/2)-$yOffset)); $yRotatedOffset = ($ImageSize/2) - (sin($radAngleRotation) * ($xOffset-($ImageSize/2))) - (cos($radAngleRotation) * (($ImageSize/2)-$yOffset)); $arrayTextSize = imagettftext($image, $intFontSize, $intAngleRotation, $xRotatedOffset, $yRotatedOffset, $colorText, $strFont, $arrayMenuItems['Item Name'][$i]); $arrayMenuItems['Lower Left X'][$i] = $arrayTextSize[0]; $arrayMenuItems['Lower Left Y'][$i] = $arrayTextSize[1]; $arrayMenuItems['Lower Right X'][$i] = $arrayTextSize[2]; $arrayMenuItems['Lower Right Y'][$i] = $arrayTextSize[3]; $arrayMenuItems['Upper Right X'][$i] = $arrayTextSize[4]; $arrayMenuItems['Upper Right Y'][$i] = $arrayTextSize[5]; $arrayMenuItems['Upper Left X'][$i] = $arrayTextSize[6]; $arrayMenuItems['Upper Left Y'][$i] = $arrayTextSize[7]; echo "<area shape=\"poly\" coords=\""; echo $arrayMenuItems['Lower Left X'][$i]; echo ","; echo $arrayMenuItems['Lower Left Y'][$i]; echo ","; echo $arrayMenuItems['Lower Right X'][$i]; echo ","; echo $arrayMenuItems['Lower Right Y'][$i]; echo ","; echo $arrayMenuItems['Upper Right X'][$i]; echo ","; echo $arrayMenuItems['Upper Right Y'][$i]; echo ","; echo $arrayMenuItems['Upper Left X'][$i]; echo ","; echo $arrayMenuItems['Upper Left Y'][$i]; echo "\" href=\""; echo $arrayMenuItems['Item Link'][$i]; echo "\" alt=\"\">"; } echo "</map>"; // create an interlaced image for better loading in the browser imageInterlace($image, 1); //header("Content-type: image/png"); imagePNG($image, "assets/navigation.png"); imagedestroy($image); $strUserAgent = $_SERVER['HTTP_USER_AGENT']; if (strpos($strUserAgent, "MSIE 6") OR strpos($strUserAgent, "MSIE 5.5")) { echo "<img src=\"assets\\spacer.gif\" width=\"".$ImageSize."\" height=\"".$ImageSize."\" style=\"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader( src='assets/navigation.png', sizingMethod='image');\" alt=\"\" usemap=\"#navigation\" ismap border=\"0\" />"; } else { echo "<img src=\"assets\\navigation.png\" alt=\"\" usemap=\"#navigation\" ismap border=\"0\" />"; } ?>[/code] the transparency seems to work nicely at the edges...but not where letters collide.... can anyone help me figure out whats happening??? maybe my config is wrong [a href=\"http://g.is-a-geek.com/phpinfo.php\" target=\"_blank\"]http://g.is-a-geek.com/phpinfo.php[/a]