مشکل با تغییر سایز تصاویر

bahy_my

Active Member
سلام بچه ها
ببینید مشکلم اینه که وقتی تغییر سایز می کنم کیفیت نمیاد پایین اما تصویر از لحاظ رنگ و .. دچار مشکل میشه.
ممنون میشم راهنماییم کنید.
اینم کدمه ( اون کلاس $mehr رو خودتون جایگزین کنید. )
PHP:
if(isset($_FILES['avator'])){
			if(($_FILES['avator']['type']=='image/pjpeg') or ($_FILES['avator']['type']=='image/gif') or ($_FILES['avator']['type']=='image/x-png')){
			$file_source=$_FILES['avator']['tmp_name'];
			$file_name=$_FILES['avator']['name'];
	copy($file_source, "avators/$username".$file_name);

			

if(!($image_1=imagecreatefrompng("avators/$username".$file_name))) {
	if(!($image_1=imagecreatefromgif("avators/$username".$file_name))) {
		if(!($image_1=imagecreatefromjpeg("avators/$username".$file_name))) {
		$mehr->show_alert("مشکل در ارسال فایل");
		}
	}
}

if(($image_1=imagecreatefrompng("avators/$username".$file_name))) $type=".png";
	if(($image_1=imagecreatefromgif("avators/$username".$file_name))) $type=".gif";
		if(($image_1=imagecreatefromjpeg("avators/$username".$file_name))) $type=".jpg";


$image_1_width=imagesx($image_1);
$image_1_height=imagesy($image_1);
$image_1_x=0;
$image_1_y=0;


$valid_width=130;
$valid_height=120;

if(($image_1_width>$valid_width) or ($image_1_height>$valid_height)){

$image_2=imagecreate($valid_width, $valid_height);
$image_2_width=$valid_width;
$image_2_height=$valid_height;
$image_2_x=0;
$image_2_y=0;

	imagecopyresized(
		$image_2, $image_1
		,
		$image_2_x, $image_2_y
		,
		$image_1_x, $image_1_y
		,
		$image_2_width, $image_2_height
		,
		$image_1_width, $image_1_height
	);
	unlink("avators/$username".$file_name);
	if($type==".jpg"){
	imagejpeg($image_2, "avators/$username".'_'."avator$type", 1000);
	}else if($type==".gif"){
	imagegif($image_2, "avators/$username".'_'."avator$type", 1000);
	}else if($type==".png"){
	imagepng($image_2, "avators/$username".'_'."avator$type", 1000);
	}
	
}else{
	unlink("avators/$username".$file_name);
	copy($file_source, "avators/$username".'_'."avator$type");
}
			
			
				$q_1=mysql_query("update user set avator='$username".'_'."avator$type"."' where name='$username'");
				
				$mehr->show_alert("آواتور شما تغییر کرد");
				$mehr->redirect("?");
				}else{
			$mehr->show_alert("فایل ارسالی شما تصویر نیست  !");
			$mehr->redirect("?edit=avator");
			}
			}
			
			 }
 
پشت اين if ها يه else بزار

PHP:
    if(($image_1=imagecreatefromgif("avators/$username".$file_name))) $type=".gif"; 
        if(($image_1=imagecreatefromjpeg("avators/$username".$file_name))) $type=".jpg";

بعد هم علت افت كيفيت اينه كه عكسي كه ميفرستي يه ضريب از

PHP:
$valid_width=130; 
$valid_height=120;

نيست بايد خودت كنترل كني عرض و طول رو و اونو در نزديك ترين ضريب كات كني و بعد كوچيك كني
 

bahy_my

Active Member
سلام
سعید جان منظورت رو متوجه نشدم.
اگه میشه بییشتر راهنماییم کن.
 

Webber

Well-Known Member
سلام
كد زير رو امتحان كنيد.

$src = ImageCreateFromJPEG($address);
$width = ImageSx($src);
$height = ImageSy($src);
$x = $width/5;
$y = $height/5;
$dst = ImageCreateTrueColor($x,$y);
ImageCopyResampled($dst,$src,0,0,0,0,$x,$y,$width,$height);
header('Content-Type: image/png');
ImagePNG($dst);
 

bahy_my

Active Member
خیلی ممنون از جوابتون.
من فردای همون روز مشکلم رو متوجه شدم.
( باید یه تقسیمی صورت می گرفت همونطور که شما هم فرمودین )
هم از سعید و هم از شما ممنونم.
 

bahy_my

Active Member
سلام
مشکل برطرف نشده :(
کمک کنید لطفاً :

PHP:
$tt=imagecreatefromjpeg("1.jpg");
$x1=imagesx($tt);
$y1=imagesy($tt);

$w=550;
$n=$x1/$w;
$h=$y1/$n;

$img2=imagecreate($w, $h);
imagecopyresized($img2, $tt, 0,0, 0,0, $w, $h, $x1, $y1);
imagejpeg($img2,"1_s.jpg");
 
آخرین ویرایش:

Ray9.net

Member
حالا آخر مشكل رفع شد يا نشد؟
خوب تا به امروز است GD را شنيده بودي؟ عضوي از Image Functions يعني توابع تصويري هست حالا باهاش كار مي كنيم
اولا" با
PHP:
getimagesize($filename);
اندازه تصوير را مي گيرند!
PHP:
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
با اين اطلاعاتش را بدست مي آورند!
با توابع زير تغيير اندازه مي دهند
PHP:
imagesx ();
imagesy ();
البته اگر مي خواهي اپلود كني و تغيير سايز بدهيد
www.blazonry.com/scripting/upload-size.php
را بهتر بخونيد!
 

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

بالا