Створення зменшених копій зображень (thumbnail)
<?php
function create_thumbnail($filename) {
// функція create_thumbnail() створює мініатюру зображенння
// (англ. thumbnail) з назвою файлу $filename
// ширина мініатюри (thumbnail) в пікселях
$final_width_of_image = 150;
// шлях до папки, яка містить зображення
// в оригінальному (початковому) розмірі
$path_to_image_directory = 'images/fullsized/';
// шлях до папки, де лежатимуть мініатюри
$path_to_thumbs_directory = 'images/thumbs/';
// спочатку перевіримо чи зображення (за вказаною адресою) існує
if(!file_exists( $path_to_image_directory . $filename )) {
die("Вказаного файлу-зображення не існує!");
}
// допустимі формати для зображень: GIF, JPG, PNG,
// для них перечислено MIME-типи
$img_mimetypes = array(
"image/jpeg",
"image/jpe",
"image/jpg",
"image/pjpeg",
"image/gif",
"image/png",
"image/x-png"
);
// дізнаємось MIME-тип поточного зображення
$img_info = getimagesize($path_to_image_directory . $filename);
$mimetype = $img_info['mime'];
// перевіряємо, чи має зображення допустимий MIME-тип
if ( !in_array($mimetype, $img_mimetypes) ) {
die("Невірний MIME-тип зображення!");
}
switch ($mimetype) {
case "image/jpeg":
case "image/jpg":
case "image/jpe":
case "image/pjpeg":
$im = imagecreatefromjpeg($path_to_image_directory . $filename);
break;
case "image/gif":
$im = imagecreatefromgif($path_to_image_directory . $filename);
break;
case "image/png":
case "image/x-png":
$im = imagecreatefrompng($path_to_image_directory . $filename);
break;
}
$ox = imagesx($im);
$oy = imagesy($im);
$nx = $final_width_of_image;
$ny = floor($oy * ($final_width_of_image / $ox));
$nm = imagecreatetruecolor($nx, $ny);
// функція imagecopyresampled() робить "ресайз" і проводить
// sampling, тобто видалення шуму і згладжування
imagecopyresampled(
$nm, $im,
0, 0,
0, 0,
$nx, $ny,
$ox, $oy
);
// перевіряємо, чи папка, в яку ми хочемо покласти
// зображення-мініатюру, існує
if(!file_exists($path_to_thumbs_directory)) {
if(!mkdir($path_to_thumbs_directory)) {
die("Відбулась помилка. Будь ласка, спробуйте ще раз!");
}
}
// записуємо зображення на диск у форматі JPEG,
// третій параметр - якість зображення (діапазон: від 0 до 100)
imagejpeg($nm, $path_to_thumbs_directory . $filename, 80);
}
// для прикладу згенеруємо мініатюру зображення
// "images/fullsized/cat.jpg"
create_thumbnail('cat.jpg');
?>
Результат виконання create_thumbnail('cat.jpg'); можна побачити нижче:
Оригінал (файл "cat.jpg") виглядає так:
Також читайте:
- How to Dynamically Create Thumbnails.
- TimbThumb — PHP-скрипт для зміни розміру зображення (розповсюджується як Open Source).
- 2 способа создания thumbnail на PHP.
Оцініть, будь ласка, матеріал: