تالار گفتمان nCIS.ir

نسخه‌ی کامل: مشکل در ساخت تصویر
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.

ABZiko

سلام، بنده کد زیر رو نوشتم :
کد:
<?php

        $captcha = rand(100000,999999);
        $image=imagecreate(230, 70);
        $background = imagecolorallocatealpha($image, 239, 239, 239, 1);
        $textColor = imagecolorallocatealpha($image, 0, 0, 0, 1);
        $fontSize = mt_rand(15, 35);
      
        imagettftext ($image, $fontSize, 30, 0, 0, $textColor,"SegoeUI.ttf", $captcha);
        imagejpeg($image);
        imagedestroy($image);        

        session_start();
        $_SESSION['captcha'] = $captcha;

        ?>

اما خروجی که بهم می ده یک سری اعداد و ارقام عجیب و غریبه، چطور درستش کنم؟
این چیزی که گذاشتی اشتباهات زیادی داره. اگه خواستی از این استفاده کن:
<?php
session_start();
	$_SESSION['captcha'] = rand(12345, 99999);
	$img = imagecreate(80,30);
	imagecolorallocate($img, 244, 244, 254);
	
	$line_color = imagecolorallocate($img, 80, 143, 143);
	$text_color = imagecolorallocate($img, 00, 000,00);
	
	for($i=0;$i<10;$i++)
	{
		imageline($img, rand(20, 5*$i), rand(0, 10*$i), rand(20, 30*$i), rand(30, 30+$i), $line_color);
	}
	
	$font = 'Brutality.ttf';
	imagefttext($img, 20, rand(0, 5), rand(5, 10), rand(18, 30), $text_color, $font, $_SESSION['captcha']);
	
	header('Content-Type:image/png');
	imagepng($img);
	imagedestroy($img);
?>
خروجی که شما میگیرین، یک تصویره. پس باید هدرهای تصویر رو هم ست کنید. الان چون از imagejpeg استفاده کردین، باید این هدر رو ست کنید:
header('Content-Type: image/jpeg');

ABZiko

استاد، اون هدر رو که اضافه می کنم، مثل کد آقای راوند ارور می ده :
به جای نمایش عکس نوشته عکس نمی تونه نمایش داده بشه چون حاوی ارور هست ...
هدر رو بردارین ببینین چه خطایی میگیرین. اگه خطایی نبود و فقط محتوای اعداد و ارقام و درواقع محتویات عکس رو دیدین، احتمالاً خطا بخاطر وجود خود هدر پیش میاد و علتش هم ذخیره کردن فایل با فرمت UTF-8 معمولی (بجای UTF-8 without BOM) هست.

ABZiko

ببخشید استاد زیاد سوال می کنم، الان این هد رو برداشتم، اینو نوشته :
‰PNG  IHDRPŒiƒ3PLTEôôþPÕÕÞ··¾˜˜ž2YY55==?zz'ü;‰#þÿ„éÿŽŒ¿‘§”~€ïL„ò5)¦8¼‹ %âïeÉ$ l}ÿ ÊIŸLœ ³.YÆ1žG× yŸ±Š8Ýá+¯à-qÆî–ªÔÖs,9¼ƒq1%ô1BR]©¯Ì§á ´`"õoÁ”3²gBBÝ|‹TéTÐtHyŒ |;fæ ÂØ54S¨£é¬ú vÕš'€¯­OøWÍ‹Ö‘uk›XÕ/x³Á–UˆŸLt˜¡ –šª[Èéê£ø‚SÊÅ[p÷ìHˆ£ª›öqõÉö/ZÕ/8æ°‚Ùnãuµ]¶Ã4ÖsÕgqÏ)îêfòŽó48ÿëdId„ƒSœ¢jNH o±·ªÏ%… •_ÎÚ˜}#œ#֝Zbû³I1òõ!Ù¨•V@€„+ÓýRPBNüåÜY¨‰+wiÄ1âI¸6Òé« °©{흇'áQ4‰r")C«cRvd’PØÌi†Ú¯çÆs©<òQövÕ„5m|Ÿ<ô*LíÕJÍž#?ùÞ,™{ ¡Ÿm;ÎÇÏjp"£œÒÂóòôpB»_¥ ¢[“‘݁ªq[÷ýv%Ú‚’çÀ£õYYÒàÆ8Mn£² -áþmúæKõ2¬çó _ …gm6LIEND®B`‚

وقتی با without BOM ذخیره می کنم فقط همین ها یکم کوچولوتر می شن و وقتی در همین Encoding بهش هدر رو اضافه می کنم، همون ارور رو می ده ...

ABZiko

دوستان لطفا کمک کنید ...
یرای کپچا از کد زیر استفاده کنید....
session_start();
$code=rand(1000,9999);
$_SESSION["code"]=$code;
$im = imagecreatetruecolor(50, 24);
$bg = imagecolorallocate($im, 22, 86, 165); //background color blue
$fg = imagecolorallocate($im, 255, 255, 255);//text color white
imagefill($im, 0, 0, $bg);
imagestring($im, 5, 5, 5,  $code, $fg);
header("Cache-Control: no-cache, must-revalidate");
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);