GD Function

اين كد تحت چه شرايطي ممكن هست كه كار نكند. راستش من از اين كد در ميان يك اسكريپت استفاده كردم متغير $a از اون اسكريپت مقدار ميگيره اما وقتي كل اسكريپ را اجرا ميكنم يك سري كد مثل كد اسكي مياد روي صفحه.

کد:
<?PHP
header("Content-type: image/jpeg");
$im = imagecreate(400,30);
$white = imagecolorallocate($im, 255,255,255);
$black = imagecolorallocate($im, 0,0,0);
imagettftext($im, 15, 0, 10, 20, $black, "/WINDOWS/Fonts/tahoma.ttf","$a");
imagejpeg($im);
imagedestroy($im);
?>
 

taher007

Member
کد شما به نظر مشکلی نداره... (به فرض صحت a)...
شاید قبل از header چیزی هست که کار رو خراب میکنه...
امتحانش ضرر نداره...
شما این فایل رو تست کن...
 
اين كد به تنهاي كار كرد اما وقتي ميگذارمش توي اون اسكريپ اصلي اين خطاها ظاهر شدن.
کد:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\program files\apache group\apache\htdocs\mail\table1list.php:2) in c:\program files\apache group\apache\htdocs\mail\table1list.php on line 2

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\apache group\apache\htdocs\mail\table1list.php:2) in c:\program files\apache group\apache\htdocs\mail\table1list.php on line 2

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\apache group\apache\htdocs\mail\table1list.php:2) in c:\program files\apache group\apache\htdocs\mail\table1list.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\apache group\apache\htdocs\mail\table1list.php:2) in c:\program files\apache group\apache\htdocs\mail\table1list.php on line 5

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\apache group\apache\htdocs\mail\table1list.php:2) in c:\program files\apache group\apache\htdocs\mail\table1list.php on line 6

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\apache group\apache\htdocs\mail\table1list.php:2) in c:\program files\apache group\apache\htdocs\mail\table1list.php on line 7

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\apache group\apache\htdocs\mail\table1list.php:2) in c:\program files\apache group\apache\htdocs\mail\table1list.php on line 8

Warning: main(phpmkrfn.php): failed to open stream: No such file or directory in c:\program files\apache group\apache\htdocs\mail\table1list.php on line 11

Warning: main(): Failed opening 'phpmkrfn.php' for inclusion (include_path='.;c:\php4\pear') in c:\program files\apache group\apache\htdocs\mail\table1list.php on line 11
 
آقا ظاهرا اين از بيخ مشكل داره چون من توابع گرافيكي را درون يك اسكريپت كوچك گذاشتم باز همان مشكل وجود داره.

نگاه كنيد اينجارو :
کد:
<?php

$Host = "localhost";
$User = "root";
$Password = "root";
$DBName = "test";
$TableName = "table1";

$Link = mysql_connect ($Host, $User, $Password);

$Query = "SELECT * FROM table1 WHERE 1 AND Number =50 "; 
$Result = mysql_db_query ($DBName, $Query, $Link);

while ($Row = mysql_fetch_array ($Result)) {
 	print ("$Row[name]<br>");
}

header("Content-type: image/jpeg");
$im = imagecreate(400,30);
$white = imagecolorallocate($im, 255,255,255);
$black = imagecolorallocate($im, 0,0,0);
imagettftext($im, 15, 0, 10, 20, $black, "/WINDOWS/Fonts/tahoma.ttf","$Row[name]");
imagejpeg($im);
imagedestroy($im);

mysql_close ($Link);
?>
 

taher007

Member
دوست من...
مشکل از کد شما نیست...
باید توجه داشته باشید که header باید قبل از هر خروجی دیگه ظاهر بشه...
تمام ارورها مربوط به این هستن که شما header رو در ابتدای کد ذکر نکردید... اون رو به خط اول منتقل کنید...
راستی از چه ادیتوری استفاده می کنید... خود ادیتور هم میتونه مشکل ساز بشه...

موفق باشید....
 
taher007 گفت:
دوست من...
مشکل از کد شما نیست...
باید توجه داشته باشید که header باید قبل از هر خروجی دیگه ظاهر بشه...
تمام ارورها مربوط به این هستن که شما header رو در ابتدای کد ذکر نکردید... اون رو به خط اول منتقل کنید...
راستی از چه ادیتوری استفاده می کنید... خود ادیتور هم میتونه مشکل ساز بشه...

موفق باشید....

راستش header را هم به اول اسكريپت منتقل كردم اما باز هم نشد. باور كنيد نميشه :roll:
در ضمن من از Zend استفاده ميكنم. اما فكر نكنم ربطي به اين داشته باشه چون من اسكريپتها رو مستقيما از طريق آپاچي ران ميكنم.
 
وقتي به اين صورت تغيرش دادم كار كرد اما يك مشكل اساسي هيچگونه خروجي ديگه اي در طول اسكريپت نميتواند وجود داشته باشد. به عنوان مثال اگر خط 15 را از حالت كامنت خارج كنم مشكل پيش مياد به كد نگاه كنيد ( يك نكته ديگه تعجب ميكنم چرا وقتي از توابع گرافيكي استفاده ميكنم خروجي ( در Internet Explorer ) گزينه اي به نام View Source ندارد.

به این نگاه کنید:
کد:
<?php
header("Content-type: image/jpeg");
$Host = "localhost";
$User = "root";
$Password = "root";
$DBName = "mail";
$TableName = "table1";

$Link = mysql_connect ($Host, $User, $Password);

$Query = "SELECT * FROM table1 WHERE 1 AND Number =30 ";
$Result = mysql_db_query ($DBName, $Query, $Link);

while ($Row = mysql_fetch_array ($Result)) {
//	echo "$Row[Mail]";                                   ///////////   Line 15   ///////////
	$im = imagecreate(400,30);
	$white = imagecolorallocate($im, 255,255,255);
	$black = imagecolorallocate($im, 0,0,0);
	imagettftext($im, 15, 0, 10, 20, $black, "/WINDOWS/Fonts/tahoma.ttf","$Row[Mail]");
	imagejpeg($im);
	imagedestroy($im);
}

mysql_close ($Link);
?>
 

taher007

Member
خوب مسلمه...
header رو پس برای چه تعریف میکنید؟ image/jpeg
------
شما میتونید عکس رو ذخیره کنید و در کدی دیگر نمایش بدید...
همچنین میتونید از iframe استفاده کنید،
و...
 
taher007 گفت:
خوب مسلمه...
header رو پس برای چه تعریف میکنید؟ image/jpeg
------
شما میتونید عکس رو ذخیره کنید و در کدی دیگر نمایش بدید...
همچنین میتونید از iframe استفاده کنید،
و...
ميشه در مورد ذخيره كردنش برام توضيح بديد ؟
 

taher007

Member
با استفاده از توابع imagepng ، imagehjpeg یا ... میتونید عکس ایجاد شده رو ذخیره کنید...
syntax تابع :
کد:
imagepng ( resource image [, string filename])
imagejpeg ( resource image [, string filename [, int quality]])

resource image که همون متغیر im$ شماست، [] هم اسم و آدرس فایل...
کد:
ImagePNG($img,"filename.PNG",100);

100 کیفیت عکس شماست (0-100)...

موفق باشید...
 

taher007

Member
با این حالت کلی هم امکانپذیره (و معمولتر)...
کد:
<?php
$im = imagecreatefrompng("test.png");
imagepng($im);
?>

یا
کد:
<?
Header("Content-type: image/jpeg");
$im = imagecreatefromjpeg("./test.jpg");
Imagejpeg($im,'',20);
ImageDestroy($im);
?>

یا....

اگه به manual سایت php مراجعه کنید مثال های خیلی خوبی دستگیرتون خواهد شد!
(لیست توابع سمت چپ : اینجا
 

جدیدترین ارسال ها

بالا