PDA

View Full Version : راهنمایی در مورد تغییر سایز عکس های پیشین



shadecute
سه شنبه 06 خرداد 1393, 14:35 عصر
سلام من موقع ارسال آواتار در 3 سایز اونارو میسازم توسط کد ( تصویرکاربر سایز بزرگ و سایز اصلی و متوسط )
فرض بر اینکه حالا چند سال به همین روش گذشته و چند هزار تا تصویر با سایز های مختلف داریم .
حالا تصمیم میگیرم 1 سایز دیگه به اون 3 سایز اضافه کنم ( تصویر خیلی کوچک کاربر برای بخش کامنت ها )
تا اینجای کار مشکلی نیست کاربر جدید تصویر رو که آپلود کنه در 4 تا سایز براش ساخته میشه
و یا حتی کاربرای قدیمی نیز تصویرشونو آپدیت کنن براشون در 4 سایز ساخنه میشه
حالا مشکل اینجاس که اگه کاربر قدیمی تصویرشو آپدیت نکنه من چظوری میتونم یک تصویر دیگر در سایز مورد نظر ایجاد کنم؟
چون الان می خوام در بخش کامنت ها تصویر کوچک کاربر رو نمایش بدم کاربرانی که تصویر رو آپدیت نکردن در اون سایز ازشون تصویر نیست و خالی نشون داده میشه

ممنون میشم راهنمایی کنید

MRmoon
سه شنبه 06 خرداد 1393, 15:38 عصر
خوب همه ی فایلای عکس ها رو بخون. امیدوارم نام عکس ها رو با یه الگوی خاصی ذخیره کرده باشی. مثلا user-size-1 و user-size-2 و گرنه که هیچی.

خوب اگه با یه روش خاصی نوشتی:

همه عکسای متوسط رو بخون بعد ببین تصویر سایز کوچیک برا اون کاربر هست یا نه. اگه نبود بسازه.

desatir7316
سه شنبه 06 خرداد 1393, 18:26 عصر
حالا اینو چرا توی yii نوشتی،
می تونی یه کار دیگه هم کنی، سایت رو برای تغیرات موقت بخوابونی، یه کد بنویسی که سایز جدید رو برای عکس هایی که اون رو ندارن ایجاد کنه، واسه اینکه این شرط اینکه این سایز وجود داره یا نه برای نمایش هر کامنت چک نشه،
یعنی منظورم اینه که یه کد بنویسی جدا از سایتت که بره توی بخش تصاویر و این قضیه رو چک کنه، بعد که انجام شد دیگه با این کد کاری نداری، می تونی سایت رو دوباره بیاری سر حالت خودش
و البته :

امیدوارم نام عکس ها رو با یه الگوی خاصی ذخیره کرده باشی.

چون اگه که نه که کارت سخت می شه یه نموره

M.Rahi
سه شنبه 06 خرداد 1393, 18:36 عصر
یه راه دیگه اینکه میتونی از عکس متوسط (که حجمش کمتره) برای کامنت استفاده کنی و توی نمایش (از طریق width و height در تگ img) کوچیکش کنی.

shadecute
سه شنبه 06 خرداد 1393, 21:02 عصر
سیستمم با Yii نوشته شده برای همین اینجا مطرح کردم. راستش دارم رو یه شرط کار میکنم که چک کنه اگه این سایز نبود بره از مسیر عکس اصلی یدونه بسازه (در حد سناریو هست ) هنوز نتونستم ردیفش کنم ولی .
عکس ها نام مشخصی نداره . اسم ماژول + یک عدد تصادفی در فولدر های مشخص

MMSHFE
چهارشنبه 07 خرداد 1393, 13:47 عصر
با مثال توضیح میدم، شما برحسب نیازتون تغییرش بدین. فرض کنید شما میخواین وقتی کاربر لاگین کرد، عکسش رو که با فرمت profile_nnnn هست و nnnn هم یک عدد تصادفیه و توی پوشه avatars ذخیره شده، چک کنه و اگه ابعادش 150x150 پیکسل نبود، بره و از پوشه uploads فایل اصلی رو بخونه و تغییر سایز بده. اسامی فایلهای اصلی و فایل تصویر کاربر هم توی فیلدهای original_image و user_image توی رکورد مربوط به کاربر ذخیره شده. خوب باید این کد رو توی اکشن لاگین بنویسید:

/**
* Displays the login page
*/
public function actionLogin() {
$model = new LoginForm();
// collect user input data
if(isset($_POST ['LoginForm'])) {
$model->attributes = $_POST ['LoginForm'];
// validate user input and redirect to the previous page if valid
if($model->validate() && $model->login()) {
$this->redirect(Yii::app()->user->returnUrl);
/* Start image check and resize code */
$user = User::model()->findByPk(Yii::app()->user->id);
$userImage = Yii::app()->basePath . '/..avatars/' . $user->user_image . '.jpg';
$originalImage = Yii::app()->basePath . '/..avatars/' . $user->original_image . '.jpg';
$imageSize = GetImageSize($userImage);
list($width, $height) = array($imageSize[0], $imageSize[1]);
if($width != 150 || $height != 200) {
$src = ImageCreateFromJPEG($originalImage);
$dst = ImageCreateTrueColor(150, 200);
ImageCopyResized($dst, $src, 0, 0, 0, 0, 150, 200, ImageSX($src), ImageSY($src));
ImageJPEG($dst, $userImage);
ImageDestroy($dst);
ImageDestroy($src);
}
/* End image check and resize code */
}
}
// display the login form
$this->render('login', array ('model' => $model));
}