picture-size

Буває, що користувач завантажує на сервер зображення у великому розмірі. Щоб не перевантажувати сайт величезними картинками в 5000px з кількома мегабайтами, рекомендую скористатися нескладною функцією на php, яка автоматично зменшить розмір фото та заощадить на хостингу багато простору. Це особливо актуально для будь-яких порталів новин, де розмір ширини або висоти картинки повинен бути певних розмірів. Тобто ми зможемо створювати мініатюри фотографій під час завантаження під певний формат блоку.

Ви зможете вибрати наскільки якісною має вийти картинка після збереження у відсотках. Навіть якщо поставити лише 90%, ви не помітите різниці, проте розмір картинки сильно зменшиться. Скрипт зміни розмірів фотографій на php. Спочатку створіть папки original, (тут будуть оригінали фото) та resize, де автоматом створяться оброблені зображення. Потім там же створіть файл index.php в UTF-8 без BOM і помістіть в нього цей код:

<?php header("Content-Type: text/html; charset=utf-8"); set_time_limit(0); foreach (glob("original/*.{jpg,JPG,jpeg,JPEG,png,PNG,gif,GIF}", GLOB_BRACE) as $filename) { $imgrename1 = pathinfo($filename, PATHINFO_BASENAME); resize($filename, "resize/" . $imgrename1, 300, 240, '', 90); } // Функція зміни розмірів function resize($file_input, $file_output, $w_new, $h_new, $percent = false, $imgkash) { list($w_i, $h_i, $type) = getimagesize($file_input); if ($w_i || $h_i) { $types = array('', 'gif', 'jpeg', 'png'); $ext = $types[$type]; if ($ext) { $func = 'imagecreatefrom' . $ext; $img = $func($file_input); if ($percent) { $w_new *= $w_i / 100; $h_new *= $h_i / 100; } if (!$w_new) $w_new = $h_new / ($h_i / $w_i); if (!$h_new) $h_new = $w_new / ($w_i / $h_i); $img_new = imagecreatetruecolor($w_new, $h_new); if ($ext == "png") { imagealphablending($img_new, false); imagesavealpha($img_new, true); } imagecopyresampled($img_new, $img, 0, 0, 0, 0, $w_new, $h_new, $w_i, $h_i); if ($type == 2) { imagejpeg($img_new, $file_output, $imgkash); imagedestroy($img_new); } else { $func = 'image' . $ext; $func($img_new, $file_output); imagedestroy($img_new); } } } else echo 'Помилка обробки...'; } ?>
  • $filename - ім'я вихідного файлу
  • "resize/".$imgrename1 - ім'я та шлях кінцевого файлу
  • 300 - бажана ширина фото після обробки. Якщо поставити "" - то буде рахуватися автоматично щодо висоти
  • 240 - необхідна висота картинки. Якщо поставити "" - автоматично розрахується в залежності від ширини картинки
  • 90 - якість картинки, що зберігається у відсотках. Чим менше - тим менший розмір фото і, відповідно, його якість

Завантажте картинки в латинських символах у папку original та запустіть скрипт за допомогою index.php. Якщо ви все зробили правильно, оброблені зображення з'являться в папці resize. Зазвичай при установці параметрів ширина або висота задається конкретно, а другий параметр опускається - таким чином картинка зменшується строго по одному параметру, а другий береться автоматично, без спотворень. Якщо вказати обидва параметри, то картинки будуть розтягуватися. Назви картинок у кирилиці скрипт не обробить.