کم کردن حجم عکس در php

سوال

سلام

چطوری میتونم با php حجم عکس هارو کم کنم؟
مثلا کاربر میاد یک عکس 7 مگابایتی رو ارسال میکنه و در سمت سرور حجم عکس با php کم بشه

حل شد 0
, 2021-04-16T12:48:34+03:30 1 پاسخ ها کاربر تازه 0

پاسخ ها ( 1 )

    0
    2021-04-16T13:20:35+03:30

    سلام

    یک کتابخانه هست به اسم iamageine که با عکس هر کاری که خواسته باشید؛ میتونید بکنید اعم از تغییر سایز، تغییر شکل، تغییر حجم و …

    که مستنداتش داخل سایت خودش موجوده میتونید مطالعه کنید:

    https://imagine.readthedocs.io/en/latest/


    راه دیگه هم اینه که از کلاس آماده زیر استفاده کنی؛ تا حجم عکس ها رو به شکل قابل توجهی کم کنی.

    کدهای فرم:

    <!DOCTYPE html>
    <html>
    
    <head>
        <title>کم کردن حجم تصویر هنگام آپلود</title>
    </head>
    
    <body>
        <form action='' method='POST' enctype='multipart/form-data'>
            <input name="image_file" type="file" accept="image/*">
            <button type="submit">Upload</button>
        </form>
    </body>
    
    </html>

    کدهای PHP(شامل کلاس آپلود و کم کردن حجم عکس):

    <?php
    if ($_SERVER['REQUEST_METHOD'] == "POST")
    {
        $file_name = $_FILES["image_file"]["name"];
        $file_type = $_FILES["image_file"]["type"];
        $temp_name = $_FILES["image_file"]["tmp_name"];
        $file_size = $_FILES["image_file"]["size"];
        $error = $_FILES["image_file"]["error"];
        if (!$temp_name)
        {
            echo "ERROR: Please browse for file before uploading";
            exit();
        }
        function compress_image($source_url, $destination_url, $quality)
        {
            $info = getimagesize($source_url);
            if ($info['mime'] == 'image/jpeg') $image = imagecreatefromjpeg($source_url);
            elseif ($info['mime'] == 'image/gif') $image = imagecreatefromgif($source_url);
            elseif ($info['mime'] == 'image/png') $image = imagecreatefrompng($source_url);
            imagejpeg($image, $destination_url, $quality);
            echo "Image uploaded successfully.";
        }
        if ($error > 0)
        {
            echo $error;
        }
        else if (($file_type == "image/gif") || ($file_type == "image/jpeg") || ($file_type == "image/png") || ($file_type == "image/pjpeg"))
        {
            $filename = compress_image($temp_name, "uploads/" . $file_name, 80);
        }
        else
        {
            echo "Uploaded image should be jpg or gif or png.";
        }
    } ?>

    در خط های 17 تا 19 که پسوندهای مجاز را تعریف کردیم، در خط 29 میتوانید با توجه به نیاز خود عددی بین 0 تا 100 قرار دهید که این عدد تعیین میکند که فشرده سازی تصویر چند درصد باشد.

    موفق باشید.

    بهترین پاسخ
      0
      2021-04-20T09:45:35+03:30

      سلام

      راه دومی که میگید که وقتی عکس فشرده میشه از کیفیت عکس هم کم میشه؟

      من نمیخوام از کیفیت عکس کم بشه

ارسال یک پاسخ