Kaklz Posted January 15, 2004 Report Share Posted January 15, 2004 Tātad situācija sekojoša. Mums ir lapa, kurai dizaina nolūkos virsrakstiņus automātiski ģenerējam ar PHP GD libu. Izmantojam funkciju imagettftext. Viss būtu skaisti un jauki, taču ir pāris problēmas. *) Cilvēkiem ir tieksme ierakstīt garus dokumentu nosaukumus, līdz ar ko arī bildītes iznāk pārāk garas un lien ārā no dizaina. Teorētiski varētu ņemt un taisīt kaut kādu maģisku word-wrap iespēju. Nebūt jau nemaz tik sarežģīti, ņemam imagettfbox, apskatāmies, cik sanāk izmērs vajadzīgajam tekstam un tad attiecīgi uzģenerējam korektu bildīti ar tekstu. Taču ir viena neliela problēma, kas mani tracina. Paņemam ar imagettfbox funkciju izmērus, uzveidojam bildīti, ieliekam tekstu, saglabājam un skatamies bildīti. Bildītei viss ir ok, tikai vienīgā nelaime, ka imagettfbox izmērus ir aprēķinājis par lielu - augstumā viss ir kārtībā, bet platumā sanāk savi 0 - 75px par daudz atkarībā no teksta garuma. Varbūt kādam ir kādas idejas, kas viņam varētu nepatikt? Funkcija apmeeram shitaada: function first_page_title($id, $text){ $text = iconv('ISO-8859-13', 'UTF-8', $text); $arr = imagettfbbox ( 16, 0, FONTS_DIR . 'georgiai.ttf', $text); $arr = fixbbox($arr); $im = imagecreate($arr['width'], $arr['height']); $orange = imagecolorallocate($im, 245, 131, 47); $white = imagecolorallocate($im, 255, 255, 255); imagefill($im, 0, 0, $white); imagettftext($im, 16, 0, 3, $arr['height'] - 8, $orange, FONTS_DIR . 'georgiai.ttf', $text); imagepng($im, TITLES_DIR . $id . '.png'); imagedestroy($im); } function fixbbox($bbox){ $xcorr=0-$bbox[6]; //northwest X $ycorr=0-$bbox[7]; //northwest Y $tmp_bbox['left']=$bbox[6]+$xcorr; $tmp_bbox['top']=$bbox[7]+$ycorr; $tmp_bbox['width']=$bbox[2]+$xcorr; $tmp_bbox['height']=$bbox[3]+$ycorr; return $tmp_bbox; } Link to comment Share on other sites More sharing options...
Kaklz Posted January 15, 2004 Author Report Share Posted January 15, 2004 nez, kaut kas pašam bija sajucis, tagad viss iet. Tā kā ja nu vajag kādam, tad teorētiski augstāk minētais piemērs ir ejošs. (protams, attiecīgi nodefinējot fontu direktoriju un citas lietas, kas tur vajadzīgas :)) Link to comment Share on other sites More sharing options...
Venom Posted January 15, 2004 Report Share Posted January 15, 2004 ņu vienīgais - ka fonts nav monospaced (jebšu katram burtam var būt atšķirīgs platums), bet php nemāk pareizi nolasīt vai skaita visu kā kādam "w" vai "m" platam burtam. Link to comment Share on other sites More sharing options...
Recommended Posts