Створення зменшених копій зображень (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") виглядає так:

Потішний кіт

Також читайте:

Оцініть, будь ласка, матеріал:

Рейтинг: 4.1/10 (голосів: 8)