PDA

View Full Version : resize كردن عكس (حل شد)



mehr1362
سه شنبه 12 دی 1391, 15:56 عصر
سلام دوستان.
من يه مشكلي براي resize كردن عكس دارم.
يه تابعي دارم كث عكس و كوچيك ميكنه و ذخيره ميكنه.ولي من ميخوام به جاي ذخيره كردن،عكس كوچيك شده رو بهم نمايش بده.ولي به جاي عكس error cannot be displyed because it contains eroor ميده.


header('Content-type: image/jpeg');
function ResizeImage($picture,$max,$pre)
{
$dir="";
list($width,$height,$type)=getimagesize($dir.$pict ure);
if($width>$max || $height>$max)
{
if($type==1)
{
$func="imagecreatefromgif";
$func2="imagegif";
}
else if($type==2)
{
$func="imagecreatefromjpeg";
$func2="imagejpeg";
}
else if($type==3)
{
$func="imagecreatefrompng";
$func2="imagepng";
}
$src_img=$func($dir.$picture);
$oh = imagesy($src_img); # original height
$ow = imagesx($src_img); # original width
$new_h = $oh;
$new_w = $ow;
if($oh > $max || $ow > $max)
{
$r = $oh/$ow;
$new_h = ($oh > $ow) ? $max : $max*$r;
$new_w = $new_h/$r;
}
$dst_img = ImageCreateTrueColor($new_w,$new_h);
ImageCopyResized($dst_img, $src_img, 0,0,0,0, $new_w, $new_h, ImageSX($src_img),
ImageSY($src_img));
$func2($dst_img,$dir.$pre."$picture");
$newimag=$pre."$picture";
$oldpic=$picture;
if(file_exists($oldpic))
{
unlink($oldpic);
}
//return $newimag;
return imagejpeg($newimag);
}
}
echo ResizeImage($_GET['img'],'20','img_2');
اگر راهنماييم كنيد ممنون ميشم.

nsco_nsco
سه شنبه 12 دی 1391, 16:35 عصر
سلام دوست من بهتره که با اچ تی ام ال این قسمت را نمایش بدی و با پی اچ پی فراخوانی کنی موفق باشید

MMSHFE
سه شنبه 12 دی 1391, 18:22 عصر
سلام. اینو امتحان کنید:


header('Content-type: image/jpeg');
define('DIR', str_replace('\\', '/', dirname(__FILE__)));
define('DS', DIRECTORY_SEPARATOR);
define('MAX', 320);
if(isset($_GET['img']) && file_exists($_GET['img'])) {
$img = DIR . DS . $_GET['img'];
list($width, $height, $type) = GetImageSize($img);
switch($type) {
case 1:
$in = 'ImageCreateFromGIF';
$out = 'ImageGif';
break;
case 2:
$in = 'ImageCreateFromJPEG';
$out = 'ImageJPEG';
break;
case 3:
$in = 'ImageCreateFromPNG';
$out = 'ImagePNG';
break;
default:
exit();
break;
}
$src = $in($img);
$sh = ImageSY($src); // source height
$sw = ImageSX($src); // source width
$dh = $sh; // Destination height
$dw = $sw; // Destination width
if($sh > $max || $sw > $max) {
$ar = $sh / $sw; // Aspect Ratio
$dh = ($sh > $sw) ? $max : $max * $ar;
$dw = $dh / $r;
}
$dst = ImageCreateTrueColor($dw, $dh);
ImageCopyResized($dst, $src, 0, 0, 0, 0, $dw, $dh, $sw, $sh);
$out($dst);
}

مثال:

<img src="image.php?img=background.png"/>

mehr1362
پنج شنبه 14 دی 1391, 10:42 صبح
سلام و ممنون از کمک شما دوستان.
این برنامه رو برای app موبایل میخوام و ظاهرا نمیشه از دستورات html استفاده کرد.
MMSHFE (http://barnamenevis.org/member.php?55504-MMSHFE) عزیز این فانکشن رو هم استفاده کردم ولی باز هم همون error داد.اگر لینک زیر و ببینید ممنون میشم
http://mrtakhfif.com/api/image.php?img=100-1.jpeg

MMSHFE
پنج شنبه 14 دی 1391, 10:50 صبح
دستور ;('header('Content-type: image/jpeg رو حذف کنید ببینیم چی چاپ میشه؟

mehr1362
پنج شنبه 14 دی 1391, 11:09 صبح
ممنون از کمک شما . حذف کردم.

MMSHFE
پنج شنبه 14 دی 1391, 14:11 عصر
خوب خطا داره میگه ابعاد واردشده صحیح نیست. فکر میکنم بخاطر اعشاری بودن باشه. شرط آخر توی کد رو با کد زیر جایگزین کنید:


if($sh > $max || $sw > $max) {
$ar = $sh / $sw; // Aspect Ratio
$dh = ($sh > $sw) ? $max : (int) $max * $ar;
$dw = (int) $dh / $r;
}

ببینید درست میشه یا نه؟

mehr1362
پنج شنبه 14 دی 1391, 14:44 عصر
متاسفانه باز هم داره error میده.به نظر شما ممکن مشکل از هاست باشه ؟ یا اینکه برنامه خاصی نباید روی هاست فعال باشه؟

MMSHFE
پنج شنبه 14 دی 1391, 15:16 عصر
شرمنده یه چند تا خطای جزئی داشت که چون سریع روی موبایل کد خودتون رو اصلاح کرده بودم، متوجه نشدم ولی الآن اصلاحش کردم. این کد رو تست کنید:


header('Content-type: image/jpeg');
define('DIR', str_replace('\\', '/', dirname(__FILE__)));
define('MAX', 320);
if(isset($_GET['img']) && file_exists($_GET['img'])) {
$img = DIR . '/' . $_GET['img'];
list($width, $height, $type) = GetImageSize($img);
switch($type) {
case 1:
$in = 'ImageCreateFromGIF';
$out = 'ImageGif';
break;
case 2:
$in = 'ImageCreateFromJPEG';
$out = 'ImageJPEG';
break;
case 3:
$in = 'ImageCreateFromPNG';
$out = 'ImagePNG';
break;
default:
exit();
break;
}
$src = $in($img);
$sh = ImageSY($src); // source height
$sw = ImageSX($src); // source width
$dh = $sh; // Destination height
$dw = $sw; // Destination width
if($sh > MAX || $sw > MAX) {
$ar = $sh / $sw; // Aspect Ratio
$dh = ($sh > $sw) ? MAX : (int) MAX * $ar;
$dw = (int) $dh / $ar;
}
$dst = ImageCreateTrueColor($dw, $dh);
ImageCopyResized($dst, $src, 0, 0, 0, 0, $dw, $dh, $sw, $sh);
$out($dst);
}

موفق باشید.

mehr1362
پنج شنبه 14 دی 1391, 23:51 عصر
خیلی ممنون از کمکتون.درست شد.