PDA

View Full Version : تغییر سایز تصویر



nejat_mohammadhossein
سه شنبه 08 مرداد 1387, 22:09 عصر
سلام
میخوام تو سایتم عکسی که کاربر upload میکنه رو برای قرار دادن تو پروفایلش تغییر سایز بدم بطوریکه کل عکس تو سایز دلخواه من نمایش پیدا کنه. آیا php همچین تابعی داره ؟ اگه میشه با یه توضیحی یا لینکی حقیر را راهنمایی کنید

sama01
چهارشنبه 09 مرداد 1387, 03:32 صبح
بله وجود دارد. روش‌های مختلفی قابل استفاده هستند که فکر می‌کنم به راحتی با یک جستجو در اینترنت پیدا شوند.
یک نمونه‌ی کار که در manual خود php آمده، این است:


<?php
// File and new size
$filename = 'test.jpg';
$percent = 0.5;

// Content type
header('Content-type: image/jpeg');

// Get new sizes
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;

// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);

// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// Output
imagejpeg($thumb);
?>

ravandi
پنج شنبه 10 مرداد 1387, 09:53 صبح
سلام
میخوام تو سایتم عکسی که کاربر upload میکنه رو برای قرار دادن تو پروفایلش تغییر سایز بدم بطوریکه کل عکس تو سایز دلخواه من نمایش پیدا کنه. آیا php همچین تابعی داره ؟ اگه میشه با یه توضیحی یا لینکی حقیر را راهنمایی کنید
سلام
البته دوست عزیز کد بسیار خوبی را ارئه دادند.ولی من برای اینکه تصاویر با یایزی که می خوام نمایش داده بشن از کد html استفاده می کنم.(البته این هم یک نوعشه....)


<img src="" width="150" height="50">

paksar
پنج شنبه 10 مرداد 1387, 10:09 صبح
سلام
البته دوست عزیز کد بسیار خوبی را ارئه دادند.ولی من برای اینکه تصاویر با یایزی که می خوام نمایش داده بشن از کد html استفاده می کنم.(البته این هم یک نوعشه....)


<img src="" width="150" height="50">

سلام

همین روش خوبیه برای تغییر سایز تصاویر

sama01
پنج شنبه 10 مرداد 1387, 10:24 صبح
یعنی چی؟
این کد شما که تصویر را تغییر سایز نمی‌دهد. فقط در ابعاد نوشته شده نشان می‌دهد. یعنی اگر کاربری عکسی با ابعاد 1000 در 1000 پیکسل بفرستد، همان عکس را با همان حجم فقط در ابعاد مثلا 100 در 100 نشان می‌دهد.
شما دو کار می‌توانید انجام دهید. عکسی که کاربر می‌فرستد را در زمان نمایش، تغییر سایز دهید (مثل کد پست دوم) یا اینکه در همان ابتدا که کاربر عکس را می‌فرستد، عکس را resize کرده و عکس resize شده را ذخیره و سپس نمایش دهید.

ravandi
پنج شنبه 10 مرداد 1387, 11:57 صبح
یعنی چی؟
این کد شما که تصویر را تغییر سایز نمی‌دهد. فقط در ابعاد نوشته شده نشان می‌دهد. یعنی اگر کاربری عکسی با ابعاد 1000 در 1000 پیکسل بفرستد، همان عکس را با همان حجم فقط در ابعاد مثلا 100 در 100 نشان می‌دهد.
شما دو کار می‌توانید انجام دهید. عکسی که کاربر می‌فرستد را در زمان نمایش، تغییر سایز دهید (مثل کد پست دوم) یا اینکه در همان ابتدا که کاربر عکس را می‌فرستد، عکس را resize کرده و عکس resize شده را ذخیره و سپس نمایش دهید.
ممنون دوست عزیز
ولی لقمه ای را چرا دور سر بچرخونیم.سوال فقط راجع به تغییر اندازه فایل برای نمایش بود.البته کد php هم میشه استفاده کرد ولی سرعت سایت برای آنالیز کد کاهش پیدا می کنه.البته باز هم میگم هر دو کد نتیجه یکسانی دارن و تصمیم گیرنده برای استفاده برنامه نویسان سایت هستن.

ممنون

sama01
پنج شنبه 10 مرداد 1387, 12:38 عصر
پس پیشنهاد نهایی می‌تونه این باشه که به محض آپلود عکس، عکس resize بشه به ابعاد دل‌خواه و لینک به عکس resize شده باشه. دیگه نه به سرور فشار می‌یاد نه به کلاینت.

resize از طریق html ممکنه (که غالبا همین طور هم هست) باعث تغییر نسبت طول و عرض عکس شده و ظاهر عکس را خراب کند که اصلا توصیه نمی‌شود.

vahid4134
پنج شنبه 10 مرداد 1387, 14:38 عصر
ممنون دوست عزیز
ولی لقمه ای را چرا دور سر بچرخونیم.سوال فقط راجع به تغییر اندازه فایل برای نمایش بود.البته کد php هم میشه استفاده کرد ولی سرعت سایت برای آنالیز کد کاهش پیدا می کنه.البته باز هم میگم هر دو کد نتیجه یکسانی دارن و تصمیم گیرنده برای استفاده برنامه نویسان سایت هستن.

ممنون

دوستان اشتباه نکنید. تغییر سایز در php فقط برای کوچک کردن اندازه نیست برای پایین آوردن حجم فایل هست. شما فرض کنید که می خوایید توی یک صفحه ۲۰ تا پروفایل با عکس نشون بدید. هر کدوم از عکسها هم می خوایید در اندازه ۳۰ در ۳۰ باشه. حالا اگر همه کاربران فایل ۵۰۰ کیلوبایتی (که فایل کم حجمی هم برای کاربر هست) رو بخوایید فقط اندازش رو با استفاده از html کوچیک کنید حجم کل عکس ها میشه ۱۰ مگابایت که واقعا رقم بالایی هست و اصلا برای خیلی از کاربران صفحه بارگذاری نمیشه. ولی اگر با gd عکس رو کوچیک کنید و کوالیتی رو پایین بیارید حجم عکس کمتر میشه

paksar
پنج شنبه 10 مرداد 1387, 15:15 عصر
دوستان اشتباه نکنید. تغییر سایز در php فقط برای کوچک کردن اندازه نیست برای پایین آوردن حجم فایل هست. شما فرض کنید که می خوایید توی یک صفحه ۲۰ تا پروفایل با عکس نشون بدید. هر کدوم از عکسها هم می خوایید در اندازه ۳۰ در ۳۰ باشه. حالا اگر همه کاربران فایل ۵۰۰ کیلوبایتی (که فایل کم حجمی هم برای کاربر هست) رو بخوایید فقط اندازش رو با استفاده از html کوچیک کنید حجم کل عکس ها میشه ۱۰ مگابایت که واقعا رقم بالایی هست و اصلا برای خیلی از کاربران صفحه بارگذاری نمیشه. ولی اگر با gd عکس رو کوچیک کنید و کوالیتی رو پایین بیارید حجم عکس کمتر میشه

سلام

برای این کار ما میتونستیم فرم آپلود عکس رو محدود کنیم ولی کاملا در این مورد حرف شما درسته.

ممنون و موفق باشید.

ravandi
شنبه 12 مرداد 1387, 13:17 عصر
دوستان اشتباه نکنید. تغییر سایز در php فقط برای کوچک کردن اندازه نیست برای پایین آوردن حجم فایل هست. شما فرض کنید که می خوایید توی یک صفحه ۲۰ تا پروفایل با عکس نشون بدید. هر کدوم از عکسها هم می خوایید در اندازه ۳۰ در ۳۰ باشه. حالا اگر همه کاربران فایل ۵۰۰ کیلوبایتی (که فایل کم حجمی هم برای کاربر هست) رو بخوایید فقط اندازش رو با استفاده از html کوچیک کنید حجم کل عکس ها میشه ۱۰ مگابایت که واقعا رقم بالایی هست و اصلا برای خیلی از کاربران صفحه بارگذاری نمیشه. ولی اگر با gd عکس رو کوچیک کنید و کوالیتی رو پایین بیارید حجم عکس کمتر میشه
سلام
حق کاملا با شماست.ولی می شه به من یک توضیح کوچیک بدید که چجوری می شه با gd این کار را کرد؟؟؟
خیلی ممنون

tanha2007
چهارشنبه 16 مرداد 1387, 17:32 عصر
خوب چرا کد پست دوم را استفاده نمیکنید ؟