چجور میشه سایز عکس را تغییر داد سایز اصلی نه سایز نمایش
Printable View
چجور میشه سایز عکس را تغییر داد سایز اصلی نه سایز نمایش
دوست عزيز بارها درباره اين موضوع بحث شده لطفا جستجو کنين
عصلي با سين نه با صاد!!!!!
منظورشون فکر ميکنم اصلي بوده نه عسلينقل قول:
در مورد سوالتون هم شما اين کد رو توي يه فايل با اسم Thumbnail.php ذخيره کنين بعد توي صفحه html يه تگ img به شکل زير قرار بدين.
اينم صفحه Thumbnail.phpکد:<img src="Thumbnail.php?path=xxxxxxxxx">
کد:$filename = $_GET['path'];
$intWidth = 10;
$intHeight = 10;
$percent = 0.5;
header('Content-type: image/jpeg');
LIST($width, $height) = getimagesize($filename);
IF($intWidth != 0 AND $intHeight != 0)
{
$newwidth = $intWidth;
$newheight = $intHeight;
}
ELSE
{
$newwidth = $width * $percent;
$newheight = $height * $percent;
}
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($thumb);
نه شما اشتب مي كني!!ايشون عكس هاي عسلي مورد نظرشون بوده!!شيرين مثل عسل!!!نقل قول:
منظورشون فکر ميکنم اصلي بوده نه عسلي
نقل قول:
می شه یکم بیشتر در مورد کارکردن این کد توضیح بدین من هرچی ور رفتم نفهمیدم چجور نام عکس و میگیره تا تغییر بده
:10:نقل قول:
اگه به یه فرهنگ لغت قدیمی مراجعه کنی می بینی که عسلی شما در ابتدا به صورت عصلی بوده
نام عکس رو از طريق متد get و با متغير path ميگيره. مثلا اگه شما ميخواين عکس ali.jpg رو کوچيک کنين کافيه عکس ر کنار فايل بزارين و يه تگ img به اين صورت توي يه صفحه html قرار بدين.
همينکد:<img src="Thumbnail.php?path=ali.jpg">
منظورتون متد گت هست دیگه؟
[php]$filename = $_GET['path'];[/php]
درسته اشتباه لپي بود از متد get استفاده شده. ممنون که يادآوري کردين.
بخشید شیکر تو کلام می یام می خواستم بدونم با این کار سایز (حجم عکس) هم کمتر میشه یا فقط اندازه عکس رو کمتر می کنه
البته من از برنامه نویسی همون قدر می دونم که گل مراد از ماشین سواری می دونه
من از نظر فتوشاپی پرسیدم
ممنون می شم اگه راهنمایی کنین
عزیزجاننقل قول:
خب توی [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] باید میپرسیدین
من خودم از دوروش استفاده میکنم
یکی از توی فتو شاپ (با استفاده از ایمیج سایز...اما کیفیتش میاد پائین) ویکی هم از برنامه ی فتو زوم (که بهتره وکیفیت رو کمتر کاهش میده)
لینک داونلودهردوشون هم تو انجمن هست
سوال دیگه داشتین بنویسین دوستان همکاری میکنن
هم سایز و هم حجم رو کم میکنه.
باید یه جایی آپلود بشه که Php و Gd رو ساپورت کنه.
ساویز جان من خودم می دونم چون خودم هم از اونجا اومدم درمورد راهنمایت هم باید بگم اگه می خوای کیفیتش توی فتوشاپ رو خودت کنترل کنی از منوی فایل برو توی save for web اونجا می تونی هم حجم و هم سایز عکس رو تغییر و هم فرمت رو انتخاب کنی و با کیفیتی که می بینی عکس رو سیو کنینقل قول:
اما دوست من مای فرند دستت درد نکنه
اما یه سوال دیگه هم داشتم می خواستم بدونم توی لود شدن عکس هم تاثیر داره یعنی فقط توی هر بار لودش پردازش سرور رو بالا میبره و توی حجم داده ها تاثیر نمی زاره نه؟
درسته این کد فقط هنگامیکه فراخوانی بشه سایز و حجم عکس رو کم میکنه و بعنوان خروجی برمیگردونه و عکس اصلی اصلا تغییر پیدا نمیکنه
همونطور که پیمان گفت ، سایز تصویر اصلی تغییری پیدا نمیکنه و هر دفعه سرور تصویر رو پردازش میکنه.
برای جلوگیری از لود سی پی یو هم میشه یه کارایی کرد... اما تصاویری که تو اینترنت هستن حجمشون معمولا کم هست. ( بالاتر از 5 مگ خیلی کم پیدا میشه ) و بعلت سایز کمشون خیلی یقه سی پی یو رو نمیگیرن و براش مشکلی پیش نمیاد.
سلام
گفتم عریضه خالی نباشه نمونه ASP.Net اش را هم بگذارم: (یک دفعه خدایی ناکرده بروبچ قدرت دات نت را دست کم نگیرند!)
البته کمی Zip شدس!!! اگر کسی مایل بودید توضیح بیشتری میدهم.کد:<%@WebHandlerLanguage="VB"Class="Photo" %>
Public Class Photo
Implements IHttpHandler
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return True
End Get
End Property
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Try
Dim img As New System.Drawing.Bitmap(context.Server.MapPath(context.Request.QueryString("File")))
img.GetThumbnailImage(CInt(context.Request.QueryString("Width")), CInt(context.Request.QueryString("Height")), Nothing, System.IntPtr.Zero).Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
Catch ex As Exception
End Try
End Sub
End Class
ايول واقعاٌ اينو نمي دونستم !!برم نيگاه كنم!!نقل قول:
اگه به یه فرهنگ لغت قدیمی مراجعه کنی می بینی که عسلی شما در ابتدا به صورت عصلی بوده
از اینکه توجه می کنین و به سوالها جواب می دید واقعا ازتون تشکر می کنم یعنی می خوام بگم بازم سوال دارم
ببینم سرورها تو حالت کلی یا از پی اچ پی ساپورت می کنن یا ای اس پی؟ یعنی غیر این که نمی شه؟
در ضمن می خواستم بدونم کدی هست که کاربر خودش اندازه عکس رو انتخاب کنه برای نمایش؟
آقا می شه بگین باید نام عکس را با تابع get به فایل php ارسال شود تا بعد از تغییرات در جای دیگر مورد استفاده قرار گیرد یا باید در همان کد htm فرا خوانی شود (نام عکس)
اگه می شه کدها را به صورت فایل در انجمن قرار بدین
همون اول تاپیک که یه مثال هست:
کد:<img src="Thumbnail.php?path=xxxxxxxxx">
من wamp 1.7 رو سیستمم نصب هست ولی این کد جواب نمیده
نام عکس به این صورت قرار می گیره [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
و عکس را نمایش نمی ده و تغییری هم رو عکس نمی ده
(عکس به همان نام در همان پوشه قرار داره)
احتمالا نسخهي php که ومپ ازش استفاده ميکنه داراي اکستنشن gd نيست. ميتونين با يه phpinfo از اين موضوع باخبر بشين.
من اینو تو سایت هم آپلود کردم نتیجه تغییری نکرد
این هم آدرس سایت [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اقا یکی بگه مشکل از کجاست
:41:دادا من فقط کد ها را کپی کردم
بدون هیچ تغییری
کد صفحه indx
کد صفحه Thumbnail.phpکد:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<img src="Thumbnail.php?path=ali.jpg">
</body>
</html>
کد:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
$filename = $_GET['path'];
$intWidth = 10;
$intHeight = 10;
$percent = 0.5;
header('Content-type: image/jpeg');
LIST($width, $height) = getimagesize($filename);
IF($intWidth != 0 AND $intHeight != 0)
**
$newwidth = $intWidth;
$newheight = $intHeight;
}
ELSE
**
$newwidth = $width * $percent;
$newheight = $height * $percent;
}
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($thumb);
</body>
</html>
خوب شما دستکاریش کردین. صفحه thumbnail نباید چیزی بجز کد زیر توش باشه حتی تگهای <html> و <body> هم نمیخواد.
کد:<?PHP
$filename = $_GET['path'];
$intWidth = 10;
$intHeight = 10;
$percent = 0.5;
header('Content-type: image/jpeg');
LIST($width, $height) = getimagesize($filename);
IF($intWidth != 0 AND $intHeight != 0)
**
$newwidth = $intWidth;
$newheight = $intHeight;
}
ELSE
**
$newwidth = $width * $percent;
$newheight = $height * $percent;
}
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($thumb);
?>
نتیجه فرقی نکرد
:41:
من کارم حل شد ولی نمی دونم چرا کد شما کار نکرد
ادامه بدید
داریم استفاده میکنیم...
چرا هفته پیش این چیزا رو برا من نگفتید
منم دقیقا همینو میخاستم
مرسی مرسی
کد رو من میگذارم برای دوستان
کد صفحه ایی که میخوایین عکس را نمایش بدین
کد صفحه photo.phpکد:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?
include('photo.php'); // فایل ی که ضمیمه شده رو include کنید
$SRC = "ali.jpg"; // آدرس تصویر
$nWD = 100; // عرض تصویر
$nHT = 100; // ارتفاع تصویر
RESIZE_IMG( $SRC, $nWD, $nHT ); // این تابع تصویر رو ریسایز میکنه و روی همون آدرس ثبت میکنه
echo "<img src='$SRC' >"; // نمایش عکس با سایز 100*100
?>
</body>
</html>
البته من اینو تو یه روم دیگه ورداشتم:11:کد:<?
//*****************************************************************************____________________RESIZE_IMG
function RESIZE_IMG($SRC,$nWD=0, $nHT=0)**
$SZ = getimagesize($SRC);
$SW = $SZ[0];
$SH= $SZ[1];
if($nWD==0)$nWD=120;
if($nHT==0)$nHT=120;
if( $SW <=$nWD && $SH<=$nHT )return $SRC;
if($SW > $SH)** $CW=$nWD; $CH= intval($CW * ($SH / $SW)) ;}
if($SW <=$SH)** $CH=$nHT; $CW= intval($CH * ($SW / $SH)) ;}
if(! resize_gd($SRC, '', $SRC, $CW, $CH, false))return false;
return $SRC;
}
//*****************************************************************************____________________IMGSIZE
function IMGSIZE($SRC,$wh)**
if(stristr($SRC,_URL))
$SRC=substr($SRC,strlen(_URL)+1,strlen($SRC));
if(!$SZ = @ getimagesize($SRC))return '';
switch($wh)**
case 'w' :
case 'W' :
return $SZ[0];
break;
case 'h' :
case 'H' :
return $SZ[1];
break;
}
return '';
}
//*****************************************************************************____________________
function createNewImg(&$img, $file, $qualityLevel='')
**
switch ($GLOBALS['imgType']) **
case 'gif':
imagegif($img, $file);
break;
case 'jpg':
if ($qualityLevel>0) imagejpeg($img, $file, $qualityLevel);
else imagejpeg($img, $file);
break;
case 'png':
imagepng($img, $file);
break;
}
imagedestroy($img);
}
//*****************************************************************************____________________
function &getImg($sourceFileName)
**
$arr = getimagesize($sourceFileName);
if (is_array($arr)) **
switch ($arr[2]) **
case 1:
$img = imagecreatefromgif($sourceFileName);
$GLOBALS['imgType'] = 'gif';
return $img;
break;
case 2:
$img = imagecreatefromjpeg($sourceFileName);
$GLOBALS['imgType'] = 'jpg';
return $img;
break;
case 3:
$img = imagecreatefrompng($sourceFileName);
$GLOBALS['imgType'] = 'png';
return $img;
break;
}
}
}
//*****************************************************************************____________________
function getVersionGd()
**
ob_start();
phpinfo(8);
$phpinfo = ob_get_contents();
ob_end_clean();
$phpinfo = strip_tags($phpinfo);
$phpinfo = stristr($phpinfo, "gd version");
$phpinfo = stristr($phpinfo, "version");
if ($phpinfo === false && function_exists('gd_info')) **
$phpinfo = gd_info();
$phpinfo = $phpinfo['GD Version'];
}
$end = strpos($phpinfo, ".");
$phpinfo = substr($phpinfo, 0, $end);
$length = strlen($phpinfo) - 1;
$phpinfo = substr($phpinfo, $length);
$GLOBALS['gdInfo'] = $phpinfo;
return $phpinfo;
}
//*****************************************************************************____________________
function checkGdFileType($filename)
**
$GLOBALS['gdNoSupport'] = '';
$arr = @ getimagesize($filename);
$res = false;
if (is_array($arr)) **
switch ($arr[2]) **
case 1:
$GLOBALS['gdNoSupport'] = 'GIF';
if (function_exists('imagecreatefromgif') && function_exists('imagegif')) **
$res = true;
}
break;
case 2:
$GLOBALS['gdNoSupport'] = 'JPG';
if (function_exists('imagecreatefromjpeg') && function_exists('imagejpeg')) **
$res = true;
}
break;
case 3:
$GLOBALS['gdNoSupport'] = 'PNG';
if (function_exists('imagecreatefrompng') && function_exists('imagepng')) **
$res = true;
}
break;
}
}
return $res;
}
//*****************************************************************************____________________
function &getImageCreate($destWidth, $destHeight)
**
if (function_exists('imagecreatetruecolor') && $GLOBALS['gdInfo']>=2) **
$image = @ imagecreatetruecolor($destWidth, $destHeight);
} else **
$image = @ imagecreate($destWidth, $destHeight);
}
return $image;
}
//*****************************************************************************____________________
function getImageCopyResampled(&$destImage, &$img, $x1, $y1, $x2, $y2, $destWidth, $destHeight, $srcWidth, $srcHeight)
**
if (function_exists('imagecopyresampled') && $GLOBALS['gdInfo']>=2) **
@ imagecopyresampled($destImage, $img, $x1, $y1, $x2, $y2, $destWidth, $destHeight, $srcWidth, $srcHeight);
} else **
@ imagecopyresized($destImage, $img, $x1, $y1, $x2, $y2, $destWidth, $destHeight, $srcWidth, $srcHeight);
}
}
//*****************************************************************************____________________
function resize_gd($sourceFileName, $folder, $destinationFileName, $newWidth, $newHeight, $keepProportion)
**
$phpinfo = getVersionGd();
$newWidth = (int)$newWidth;
$newHeight = (int)$newHeight;
if (!$GLOBALS['gdInfo'] >= 1 || ! checkGdFileType($sourceFileName)) **
return false;
}
$img = &getImg($sourceFileName);
$srcWidth = imagesx($img);
$srcHeight = imagesy($img);
if ( $keepProportion && ($newWidth != 0 && $srcWidth<$newWidth) && ($newHeight!=0 && $srcHeight<$newHeight) ) **
if ($sourceFileName != $folder . $destinationFileName) **
@ copy($sourceFileName, $folder . $destinationFileName);
}
return true;
}
if ($keepProportion == true) **
if ($newWidth != 0 && $newHeight != 0) **
$ratioWidth = $srcWidth/$newWidth;
$ratioHeight = $srcHeight/$newHeight;
if( $ratioWidth < $ratioHeight )**
$destWidth = $srcWidth/$ratioHeight;
$destHeight = $newHeight;
} else **
$destWidth = $newWidth;
$destHeight = $srcHeight/$ratioWidth;
}
} else **
if ($newWidth != 0) **
$ratioWidth = $srcWidth/$newWidth;
$destWidth = $newWidth;
$destHeight = $srcHeight/$ratioWidth;
} else if ($newHeight != 0) **
$ratioHeight = $srcHeight/$newHeight;
$destHeight = $newHeight;
$destWidth = $srcWidth/$ratioHeight;
} else **
$destWidht = $srcWidth;
$destHeight = $srcHeight;
}
}
} else **
$destWidth = $newWidth;
$destHeight = $newHeight;
}
$destWidth = round($destWidth);
$destHeight = round($destHeight);
$destImage = &getImageCreate($destWidth, $destHeight);
getImageCopyResampled($destImage, $img, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
imagedestroy($img);
$img = &$destImage;
createNewImg($img, $folder . $destinationFileName, 80);
return true;
}
?>
راستی دوستان اگه میشه بگین چجورباید با کد آقا پیمان در هم آمیخت برای اینکه اول ابعاد رو چک کنه بعد اگه بزرگتر از مثلآ200px بود اونو کوچیک کنه
چرا این کدا که گذاشتید رو سیستم من جواب نمیده
اولی که اصلا تصویر رو نمی یاره
دومی هم هیچ تغییری تو سایز تصویر نمیده
هر دو تاش برای من خیلی خوب کار میکنه. شاید جی دی نصب نیست:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
دادا اگه کتاب خونه gd کار نمی کرد که دومی هم ول معطله
استاد پیمان درست گفتن که gd با ومپ نصب نمی شه ولی من هر دوتا را رو سایت آپلود کردم (سایت مجانی نیست)
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[quote=dady123;1162724]:41:دادا من فقط کد ها را کپی کردم
بدون هیچ تغییری
کد صفحه indx
کد صفحه Thumbnail.phpکد:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<img src="Thumbnail.php?path=ali.jpg">
</body>
</html>
[quote=dady123;1162724/]کد:<?PHP
$filename = $_GET['path'];
$intWidth = 10;
$intHeight = 10;
$percent = 0.5;
header('Content-type: image/jpeg');
LIST($width, $height) = getimagesize($filename);
IF($intWidth != 0 AND $intHeight != 0)
**
$newwidth = $intWidth;
$newheight = $intHeight;
}
ELSE
**
$newwidth = $width * $percent;
$newheight = $height * $percent;
}
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($thumb);
?>
درسته غیر فعال بود
اجرا شد ولی هر دو کد ایراد داره
کد اول آقای peyman1987 ابعاد تصویر را در نظر نمیگیره
یعنی تصویر رو هرچی باشه به همون سایزی که میگی مثلا 100 در 100 در میاره
دوم اینکه نام تصویر رو تغییر میده که این کار نه برای ما بلکه برا کاربر موقع ذخیره کردن تصویر دردسر سازه
مزیتی که داره اینه که تصویر اصلی هیچ تغییری نمی کنه
کد دوم آقای dady123 بسیار عالیه
ابعاد تصویر رو در نظر میگیره و اونها رو متناسب با هم تغییر میده برا همین تصویر دقیقا همونه با ابعاد کوچک تر
هم تصاویر طولی و هم عرضی به خوبی کار میکنه
اسم تصاویر هم تغییر نمیده
اما چه سود که
این تغییرات رو روی تصویر اصلی انجام میده نه تصویری که برا کاربر میره
به هر حال دمتون گرم کار من که را افتاد
دادا اینو یه
به این تغییر بده تا عکس را به نامکد:RESIZE_IMG( $SRC, $nWD, $nHT ); // این تابع تصویر رو ریسایز میکنه و روی همون آدرس ثبت میکنه
m_نام خود عکس
ذخیره بشه
کد:$m = m_$SRC;
RESIZE_IMG( $m, $nWD, $nHT ); // این تابع تصویر رو ریسایز میکنه و روی همون آدرس ثبت میکنه