1399/1/9، 07:26 عصر
به نام خدا؛
سلام دوستان امیدوارم حالتون خوب باشه...
حتماً براتون پیش اومده که فایل تصویری رو در هاست یا سرورتون بخواین آپلود کنین ولی نگران این باشین که فضایی که شرکت هاستینگ بهتون ارائه داده پر بشه. درسته که عموماً تصاویر حجم شاخصی ندارن ولی برای هاست یا سرورهایی که تنها چند مگ ظرفیت ذخیره سازی دارن این موضوع بسیار حیاتیه. به همین منظور امروز قصد داریم کد فشرده سازی تصاویر رو در PHP با هم بررسی کنیم.
اما کد به این شرحه:طریقه استفاده از کد:
برای استفاده از کد باید ریکوئستی مشابه ریکوئست زیر ارسال کنین:پارامتر image در واقع تصویری که قصد دارین فشرده سازی کنین رو مشخص میکنه که حتماً باید در دایرکتوری مورد نظرتون در هاست وجود داشته باشه. البته یادتون نره که در کنار نام فایل تصویری فرمتش رو هم درج کنین. پارامتر quality هم کیفیت تصویر خروجی رو مشخص میکنه که میتونین از یک تا صد بهش مقدار بدین. مسلم هست که هر چی کیفیت تصویر خروجی کمتر باشه حجم تصویر خروجی هم کمتر میشه و از اونطرف کیفیت هم کاهش پیدا میکنه. پارامتر random_name هم دو مقدار میتونین براش تعریف کنین. اگر مقدار yes براش تعریف بشه نام فایل خروجی مقدار md5 نام فایل اولیه خواهد بود و اگر مقدار این پارامتر no باشه نام فایل خروجی دقیقاً مشابه فایل اولیه خواهد بود. در نهایت پارامتر delete هم میتونه دو مقدار صفر یا یک داشته باشه. اگر مقدار صفر رو برای این پارامتر تنظیم کنین تصویر اولیه حذف نخواهد شد ولی اگر مقدار یک رو برای این پارامتر تعیین کنین تصویر اولیه حذف خواهد شد و فقط تصویر خروجی موجود خواهد بود.
دقت کنید که اگر پارامتر random_name رو برابر no قرار بدین در واقع فایل اولیه چه بخواین و چه نخواین حذف میشه چـرا که فایل خروجی با فایل اولیه replace یا جایگزین میشه.
خـروجی و توضیحات کـد:
به طور کلی اگر حالت نام تصادفی (random_name) فعال باشه و پارامتر delete هم مقدارش یک باشه چنین پیامی نمایش داده میشه.اگر تصویر ذکر شده توسط کاربر هم موجود نباشه ارور زیر چاپ میشه:چنانچه به کد دقت کرده باشین با دو خط دستور ارورهایی که مفسر PHP نمایش میده رو قطع کردیم. این مسئله میتونه خیلی کاربردی باشه و توصیه میکنم حتماً این مورد رو توی کدهای PHP خودتون اعمال کنین. درسته نمایش ارورها توسط مفسر PHP میتونه به توسعه دهنده در حین ساخت و تکامل پروژه کمک شایانی بکنه ولی اگر توی پروژه نهایی آپلود شده همچنان فعال باشه میتونه سرنخ های خوبی به دست هکرها بده. پس با این رویکرد باید حساب تک تک اتفاقاتی که ممکنه کاربر رقم بزنه رو بکنین!
امیدوارم از این مطلب لذت برده باشین و براتون مفید واقع شده باشه. خوشحال میشم نظراتتون رو بهم گوشزد کنین.
به زودی آموزش فشرده کردن فایل های ویدیوئی در PHP (از لحاظ رزولیشن و بیت ریت) رو هم قرار میدم.
با آرزوی بهترین ها...
سلام دوستان امیدوارم حالتون خوب باشه...
حتماً براتون پیش اومده که فایل تصویری رو در هاست یا سرورتون بخواین آپلود کنین ولی نگران این باشین که فضایی که شرکت هاستینگ بهتون ارائه داده پر بشه. درسته که عموماً تصاویر حجم شاخصی ندارن ولی برای هاست یا سرورهایی که تنها چند مگ ظرفیت ذخیره سازی دارن این موضوع بسیار حیاتیه. به همین منظور امروز قصد داریم کد فشرده سازی تصاویر رو در PHP با هم بررسی کنیم.
اما کد به این شرحه:
کد php:
<?php
/**
* @author Master Badfar
* @copyright 2020
*/
// صدور مجوز برای درخواست AJAX
header('Access-Control-Allow-Origin: *');
// قطع نمایش خطاهای مفسر PHP
ini_set('display_errors', 0);
error_reporting(~E_WARNING & ~E_NOTICE & ~E_STRICT);
// تعریف متغیر میزان ارور
$error = 0;
// تعریف فانکشن فشرده سازی تصویر
function compress($source, $destination, $quality) {
// دریافت حجم تصویر
$info = getimagesize($source);
// تبدیل فرمت های مختلف تصویری به jpeg
if ($info['mime'] == 'image/jpeg')
$image = imagecreatefromjpeg($source);
elseif ($info['mime'] == 'image/gif')
$image = imagecreatefromgif($source);
elseif ($info['mime'] == 'image/png')
$image = imagecreatefrompng($source);
// در پایان ایجاد یک تصویر با فرمت jpeg با کیفیت و نام تعیین شده در متغیر
imagejpeg($image, $destination, $quality);
// برگرداندن نام فایل ایجاد شده
return $destination;
}
// دریافت نام تصویر از کاربر
$source_img = $_GET['image'];
// اگر چنین فایلی در مسیر وجود نداشت به مقدار خطاها یک عدد اضافه کن و پیغام خطا را نمایش بده
if (!file_exists($source_img) && !empty($_GET['image'])){
echo "The file that you have mentioned is not available!";
$error++;
}elseif(empty($_GET['image'])){
echo "You have not declared an image.";
$error++;
}
// اگر کاربر درخواست کرده بود که نام تصادفی ساخته شود این کار صورت بگیرد
if ($_GET['random_name'] == 'yes'){
$destination_img = md5($source_img) . '.jpg';
// در صورتی که کاربر درخواست کرده بود که نام تصادفی به فایل تعلق نگیرد نام اصلی فایل حفظ شود
}elseif($_GET['random_name'] == 'no'){
$destination_img = $source_img . '.jpg';
}
// انجام پروسه فشرده سازی تصویر
if ($error == 0){
$d = compress($source_img, $destination_img, $_GET['quality']);
if($_GET['random_name'] == 'no'){
echo "Done!" . '</br>';
}elseif($_GET['random_name'] == 'yes'){
echo "Done!" . '</br>';
echo "The file name is: " . $destination_img . '</br>';
}
}
// اگر کاربر قصد داشت در حالت برقرار بودن ایجاد نام تصادفی تصویر اولیه حذف شود این کار انجام شود
if ($_GET['delete'] == 1 && $error == 0){
unlink($source_img);
echo "Also the primitive file named ' " . $source_img . " ' was deleted as you wished!";
}
?>
برای استفاده از کد باید ریکوئستی مشابه ریکوئست زیر ارسال کنین:
کد:
http://yourhost.com/file.php?image=x.jpg&quality=y&random_name=yes/no&delete=0/1
دقت کنید که اگر پارامتر random_name رو برابر no قرار بدین در واقع فایل اولیه چه بخواین و چه نخواین حذف میشه چـرا که فایل خروجی با فایل اولیه replace یا جایگزین میشه.
خـروجی و توضیحات کـد:
به طور کلی اگر حالت نام تصادفی (random_name) فعال باشه و پارامتر delete هم مقدارش یک باشه چنین پیامی نمایش داده میشه.
کد:
Done!
The file name is: x (رشته MD5 نام فایل اولیه)
Also the primitive file named ' z.jpg ' was deleted as you wished!
کد:
The file that you have mentioned is not available!
امیدوارم از این مطلب لذت برده باشین و براتون مفید واقع شده باشه. خوشحال میشم نظراتتون رو بهم گوشزد کنین.
به زودی آموزش فشرده کردن فایل های ویدیوئی در PHP (از لحاظ رزولیشن و بیت ریت) رو هم قرار میدم.
با آرزوی بهترین ها...