|
imagepsbbox
Give the bounding box of a text rectangle using PostScript Type1 fonts
(PHP 4, PHP 5)
Code Examples / Notes » imagepsbboxdaniel
When using imagepsbbox, you are probably trying to do something like creating a button with text, so that the button is large enough for the text... Below is a very simple example of making a black button just big enough to display white text on it. <?php //if text is no variable set sample text if (!$text) $text = "This is a sample text"; // set the font size $fontsize=14; // load the font to use $font=ImagePsLoadFont("/fonts/ariam___.pfb"); //get the left lower corner and the right upper list($lx,$ly,$rx,$ry) = imagepsbbox($text,$font,$fontsize,0,0,0); // calculate the size of the text $textwidth = $rx - $lx; $textheight = $ry - $ly; // make an image 40 pixels wider and 20 pixels higher than the text $imh = $textheight + 20; $imw = $textwidth + 40; $im = imageCreate( $imw, $imh ); //define colors, first color is used as background color! $black = ImageColorAllocate ($im, 0, 0, 0); $white = ImageColorAllocate ($im, 255, 255, 255); //create the text (with the same parameters as imagepsbbox!) ImagePSText ($im, "$text", $font, $fontsize, $white, $white, 20, 20,'','','',4); //send the header header("Content-type: image/jpeg"); // create the image ImageJPEG ($im,"",100); //destroy the image & font to free memory Imagepsfreefont ( $font ); ImageDestroy ( $im ); ?> honza dot bartos
When using imagepsbbox, keep in mind, that meaning of y-coordinates is slightly different here. Y-coordinates returned by this function are related to the baseline of the text starting at point [0,0]. Positive values represent points ABOVE the baseline, negative values represent points BELOW the baseline. That is why the lower left y-coordinate is always smaller here than the upper right y-coordinate (these two coordinates are actualy values of metrics.descent and metrics.ascent - see T1Lib docs). So when you want to place some text using coordinates of the top left corner (for example [100,100]), use this: <?php $x = 100; $y = 100; $text = "Dodge this"; $fontsize=18; $font=imagepsloadfont("somefont.pfb"); list($lx,$ly,$rx,$ry) = imagepsbbox($text,$font,$fontsize); imagepstext ($someimage, $text, $font, $fontsize, $somecolor, $somecolor, $x, $y + $ry); ?> Hope it helps someone, I got stuck with this for a while. |
Change Languagegd_info getimagesize image_type_to_extension image_type_to_mime_type image2wbmp imagealphablending imageantialias imagearc imagechar imagecharup imagecolorallocate imagecolorallocatealpha imagecolorat imagecolorclosest imagecolorclosestalpha imagecolorclosesthwb imagecolordeallocate imagecolorexact imagecolorexactalpha imagecolormatch imagecolorresolve imagecolorresolvealpha imagecolorset imagecolorsforindex imagecolorstotal imagecolortransparent imageconvolution imagecopy imagecopymerge imagecopymergegray imagecopyresampled imagecopyresized imagecreate imagecreatefromgd2 imagecreatefromgd2part imagecreatefromgd imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromstring imagecreatefromwbmp imagecreatefromxbm imagecreatefromxpm imagecreatetruecolor imagedashedline imagedestroy imageellipse imagefill imagefilledarc imagefilledellipse imagefilledpolygon imagefilledrectangle imagefilltoborder imagefilter imagefontheight imagefontwidth imageftbbox imagefttext imagegammacorrect imagegd2 imagegd imagegif imagegrabscreen imagegrabwindow imageinterlace imageistruecolor imagejpeg imagelayereffect imageline imageloadfont imagepalettecopy imagepng imagepolygon imagepsbbox imagepsencodefont imagepsextendfont imagepsfreefont imagepsloadfont imagepsslantfont imagepstext imagerectangle imagerotate imagesavealpha imagesetbrush imagesetpixel imagesetstyle imagesetthickness imagesettile imagestring imagestringup imagesx imagesy imagetruecolortopalette imagettfbbox imagettftext imagetypes imagewbmp imagexbm iptcembed iptcparse jpeg2wbmp png2wbmp |