PDA

View Full Version : سوال: مشکل در کلاس ساخت تصویر



ABZiko
چهارشنبه 22 بهمن 1393, 23:28 عصر
سلام، بنده یک کلاس ساختم با کد زیر :


<?php

class CreatingImage{

public function createImage($width,$height){
return imagecreate($width,$height);}

public function imageColor($img,$red,$green,$blue){
return imagecolorallocate($img,$red,$green,$blue);}

public function imageType($img,$png,$jpg,$gif){
$success=false;
if(imagepng($img)){
$png=imagepng($img);
return $png;
$success=true;}

if(imagejpeg($img)){
$jpg=imagejpeg($img);
return $jpg;
$success=true;}

if(imagegif($img)){
$gif=imagegif($img);
return $gif;
$success=true;}}

public function createText($img,$size,$angle,$x,$y,$textColor,$fon t,$text){
imagettftext($img,$size,$angle,$x,$y,$textColor,$f ont,$text);}}

?>


و این هم صفحه دیگه ای هست که کلاس بالا رو در اون فراخوانی می کنم :


<title>Creating an Image</title>
<?php

require_once('CreatingImage.php');

$obj=new CreatingImage();
$img=$obj->createImage(200,200);
$obj->imageColor($img,200,200,200);
$obj->imageType($img,true,false,false);
/*$textColor=imagecolorallocate($img,150,100,50);
$obj->createText($img,20,20,20,20,$textColor,"Segoe UI.ttf",rand(111,999));*/
imagepng($img);

?>

اما موقع اجرا اروری نمی ده، فقط می نویسه :
‰PNG  IHDRÈÈ—–<ÝPLTEÈÈÈ®ZíæIDATX…íÁÃ ùS_áU|PeÕÇIEND®B`‚‰PNG  IHDRÈÈ—–<ÝPLTEÈÈÈ®ZíæIDATX…íÁÃ ùS_áU|PeÕÇIEND®B`‚‰PNG  IHDRÈÈ—–<ÝPLTEÈÈÈ®ZíæIDATX…íÁÃ ùS_áU|PeÕÇIEND®B`‚
این ها چی هستن؟

amir6268
پنج شنبه 23 بهمن 1393, 01:20 صبح
از UTF-8 استفاده کردی داخل صفحه فراخوانی؟ :


<meta charset="UTF-8">

یا این :


<meta content="text/html; charset=utf-8" http-equiv="Content-Type">


هر دوی اینها را امتحان کن ببین مشکلت حل میشه ...

lastone
پنج شنبه 23 بهمن 1393, 01:37 صبح
این ها همون کدهای تصویر ساخته شده هستند .باید قبل از ارسال تصویر به مرورگر header مناسب ست بشه .تا تصویر درست نمایش داده بشه.

header('Content-Type: image/png');

ABZiko
پنج شنبه 23 بهمن 1393, 01:42 صبح
نه متاسفانه درست نشد.

ABZiko
پنج شنبه 23 بهمن 1393, 13:00 عصر
دوستان کسی اطلاعی نداره؟

bagherok
پنج شنبه 23 بهمن 1393, 13:17 عصر
دوستان کسی اطلاعی نداره؟

اینو به صفحه ای که عکس ساخته میشه اضافه کنید.

header('Content-Type: image/png');

دیگه هیچ کد اضافه ای نباید تو اون صفحه باشه
الان این اضافه هست

<title>Creating an Image</title>



به اینصورت


//CreatingImage.php
header('Content-Type: image/png');
class CreatingImage{

public function createImage($width,$height){
return imagecreate($width,$height);}

public function imageColor($img,$red,$green,$blue){
return imagecolorallocate($img,$red,$green,$blue);}

public function imageType($img,$png,$jpg,$gif){
$success=false;
if(imagepng($img)){
$png=imagepng($img);
return $png;
$success=true;}

if(imagejpeg($img)){
$jpg=imagejpeg($img);
return $jpg;
$success=true;}

if(imagegif($img)){
$gif=imagegif($img);
return $gif;
$success=true;}}

public function createText($img,$size,$angle,$x,$y,$textColor,$fon t,$text){
imagettftext($img,$size,$angle,$x,$y,$textColor,$f ont,$text);}
}


//img.php
$obj=new CreatingImage();
$img=$obj->createImage(200,200);
$obj->imageColor($img,200,200,200);
$obj->imageType($img,true,false,false);
imagepng($img);


//index.php
<title>Creating an Image</title>
<img src="img.php">

ABZiko
پنج شنبه 23 بهمن 1393, 14:57 عصر
ممنون ، کار کرد، یک سوال دیگه من الان اومدم به صفحه دوم هم یک متن اضافه کردم، ولی نمایش نمی ده، چرا؟


$textColor=imagecolorallocate($img,100,50,25);
$rand=rand(1111,9999);
$obj->createText($img,20,5,5,5,$textColor,"Segoe UI.ttf",$rand);