Portál AbcLinuxu, 20. dubna 2024 02:17


Dotaz: PHP a GDlib

23.4.2011 00:35 LuRy | skóre: 12
PHP a GDlib
Přečteno: 156×
Odpovědět | Admin
Zdravim, mam problem s GD. Udělal jsem pomocí php a gd obrázek který je skládaný z několika dalších, vše fungovalo parádně, ale po pár dnech se brutálně zpomalilo zpracování a vykreslení obrázku. Skript zůstal v původní podobě bez úprav mezi dobou kdy to chodilo jak má do doby kdy to začlo dělat tyhle věci. Zkoušel jsem i jednotlivé části zakomentovávat, ale téměř bez výsledku jen se doba načítání zkrátila o jednotlivou operaci. Prostě pro mě nepochopitelný důvod proč to začlo tohle dělat

Nesetkal se s tím někdo? Restart apache a nakonec i celého serveru nepomoh.
foreach ($req[1] as $key=>$value) {
	$value = strip_tags($value);
	//print $value."\n";
	$kontakt[] = "http://server/adr/imgtext.php?code=".urlencode($value)."&size=14";
}
/* ------------------------------------------------------------------------------------ */

$nazev = "http://server/adr/imgtext.php?code=".urlencode($sql[1])."&size=23";
$carovykod = "http://server/adr/barcode.php?code=".encode(($id)."-".($kod),"@$%^")."&encoding=128B&scale=2&mode=png&bars=0.png";
$textkod = "http://server/adr/imgtext.php?code=e-mail:%20".$sql2['email']."&size=19";
$cena = "http://server/adr/imgtext.php?code=".(($sql['cislo1']-$sql['cislo2'])*1)."%20&size=40&zkracenex";
$oddo = "http://server/adr/imgtext.php?code=".$roddo."&size=16";
$oddo2 = "http://server/adr/imgtext.php?code=".$roddo2."&size=16";
$pozadi = "http://server/adr/pozadi1.jpg"; 

$logo = "http://server/images/loga/logo.gif"; 

/* Po tuhle část není žádné zpomalení, takže problém nastává v použití GD */
$nazev = imagecreatefrompng($nazev);
$carovykod = imagecreatefrompng($carovykod);
$pozadi = imagecreatefromjpeg($pozadi);
$textkod = imagecreatefrompng($textkod);
$oddo = imagecreatefrompng($oddo);
$cena = imagecreatefrompng($cena);
$oddo2 = imagecreatefrompng($oddo2);
$logo = imagecreatefromgif($logo);
//$kod = $_GET['kod']; 

Header ("Content-type: image/png");
// Velikost rastru
$iOut = imagecreatetruecolor ("1132","755") ; 

imagecopy ($iOut,$pozadi,0,0,0,0,imagesx($pozadi),imagesy($pozadi)); 
imagedestroy ($pozadi); 

imagecopy ($iOut,$logo,45,210,0,0,imagesx($logo),imagesy($logo)); 
imagedestroy ($logo); 

imagecopy ($iOut,$nazev,45,270,0,0,imagesx($nazev),imagesy($nazev)); 
imagedestroy ($nazev); 

imagecopy ($iOut,$textkod,45,35,0,0,imagesx($textkod),imagesy($textkod)); 
imagedestroy ($textkod); 

$kontaktpx = 45;
$kontaktpy = 420;
foreach ($kontakt as $key=>$value) {
	$kontakty = imagecreatefrompng($value);
	imagecopy ($iOut,$kontakty,$kontaktpx,$kontaktpy,0,0,imagesx($kontakty),imagesy($kontakty)); 
	imagedestroy ($kontakty);
	$kontakty = "";
	$kontaktpy += 30; 
	
} 
imagecopy ($iOut,$oddo,765,403,0,0,imagesx($oddo),imagesy($oddo)); 
imagedestroy ($oddo);
imagecopy ($iOut,$oddo2,940,403,0,0,imagesx($oddo2),imagesy($oddo2)); 
imagedestroy ($oddo2);

imagecopy ($iOut,$carovykod,45,70,0,0,imagesx($carovykod),imagesy($carovykod)); 
imagedestroy ($carovykod);

imagecopy ($iOut,$cena,633,30,0,0,imagesx($cena),imagesy($cena)); 
imagedestroy ($cena);


ImageLine($iOut, 45, 204, 900,204, $line_color);
ImageLine($iOut, 45, 203, 900,203, $line_color);
ImageLine($iOut, 45, 202, 900,202, $line_color);

imagepng($iOut); 
imgtext.php

header("Content-type: image/png");
$string =$_GET['code'];
$fonty="./arialbd.ttf";
if (!isset($_GET['size'])){
	$font = 19;
	$font2 = 40;
	$width  = ImageFontWidth($font) * strlen($string)*3+60;
	$height = (ImageFontHeight($font)*4)-10;
} else {
	$font = $_GET['size'];
	$font2 = $_GET['size'];
	if (!isset($_GET['zkracene']))
		$width  = ($font) * strlen($string) - (3*strlen($string));
	else
		$width  = ($font) * strlen($string) - (3*strlen($string))-360;

	if (isset($_GET['zkracenex']))
		$width  = ($font) * strlen($string) - (3*strlen($string))-60;
		
	$height = ($font)*2-$font+4;
}
$im = @imagecreate($width , $height)
    or die("Cannot Initialize new GD image stream");
	imagealphablending($im, false);
	imagesavealpha($im, true);
$background_color = imagecolorallocate($im, 255,255,255);
$text_color = imagecolorallocate($im, 233, 14, 91);
//imagestring($im, $font, 5, 5,  $string, $text_color);
$black = imagecolorallocate($im, 0, 0, 0);
imagettftext($im, $font2, 0, 0, $font2, $black, $fonty, $string);
imagepng($im);
imagedestroy($im);
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Na otázku zatím nikdo bohužel neodpověděl.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.