Вы можете авторизоваться через ВКонтакте, Фейсбук и оставить комментарий


Превью в виде квадрата (PHP)

Вступление

Создавая галерею изображений на PHP, практически всегда необходимо создавать превью большого изображения. Сделать превью квадратным немного сложнее обычного изменения размеров изображения.

Функция square_preview

Создадим функцию void square_preview(string $filename, string $size), которая будет создавать квадратные превью из JPEG-изображений Функция будет принимать два параметра: имя файла и размер стороны квадрата.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
/**
 * void square_preview - создание квадратных превью из JPEG-файлов
 *
 * string $file - имя файла оригинального изображения
 * int $size - размер стороны квадрата превью 
 *
 */
function square_preview($file$size)
{
    
// Выставляем заголовок
    
header("Content-Type: image/jpg");
    
    
// Открываем оригинальное изображение
    
$source imagecreatefromjpeg($file);
    
    
// Получаем размеры оригинального изображения
    
list($width$height) = getimagesize($file);
    
    
// Превью
    
$thumbs imagecreatetruecolor($size$size);
    
    
// Горизонтальное изображение
    
if ($width $height && $width $size)
    {
        
imagecopyresampled($thumbs$source00, (($width-$height)/2), 0$size$size$height$height);
    }
    
// Вертикальное изображение
    
elseif ($height $width && $height $size)
    {
        
imagecopyresampled($thumbs$source000, (($height-$width)/2), $size$size$width$width);
    }
    
// Если квадрат
    
elseif ($height == $width && $height $size)
    {
        
imagecopyresampled($thumbs$source0000$size$size$width$width);
    }
    
// Изображение меньше размеров стороны
    
else
    {
        
$thumbs $source;
    }
    
    
// Выводим изображение
    
imagejpeg($thumbs);
}
?>

Примеры обработанных изображений

Горизонтальное изображение

Горизонтальное изображение

500x500

Горизонтальное изображение 500x500

300x300

Горизонтальное изображение 300x300

100x100

Горизонтальное изображение 100x100

Вертикальное изображение

Вертикальное изображение

500x500

Вертикальное изображение 500x500

300x300

Вертикальное изображение 300x300

100x100

Вертикальное изображение 100x100

Опубликовано: 03 апреля 2011  ·  Автор: Артём Фёдоров  ·  3880 просмотров

Категория

ГлавнаяПрограммированиеPHPРабота с изображениямиПревью в виде квадрата (PHP)

Чтобы оставить комментарий нужно авторизоваться на сайте
или войти через ВКонтакте или Фейсбук

Войти через ФейсбукВойти через Твиттер

Комментарии

Большое спасибо за рабочий скрипт! Только строку $source = imagecreatefromjpeg(); я бы заменил на
$type = exif_imagetype($file);
if ($type == 2)
$source = imagecreatefromjpeg ($file);
elseif ($type == 3)
$source = imagecreatefrompng ($file);
elseif ($type == 1)
$source = imagecreatefromgif ($file);
else
return false;
Владислав Воробьев · 133 дня назад
Без проблем.
Артём Фёдоров · 3 года назад
ОК, все понятно, спасибо!
Створення Сайтів · 3 года назад
Нужно проверять тип файла, например функцией mime_content_type, и в зависимости от типа выдавать соответствующий заголовок (content-type: image/gif, например), ну и функции соответствующие imagecreatefromgif, imagegif или imagecreatefrompng, imagepng.
Артём Фёдоров · 3 года назад
А как сделать, чтоб не только jpg, а й png и gif (тоесть стандартние изображения) так обрезало?
Створення Сайтів · 3 года назад
Работа с изображениями, PHP, Программирование

© 2010-2017 expange.ru
При полном или частичном копировании статей сайта, ссылка на источник обязательна.

Хотите узнать больше информации, пишите на: artem@expange.ru

Полезное онлайн  ·  Новости  ·  Изображения  ·  Статьи по датам

О проекте  ·  Правила пользования  ·  Представительства

Благодарности и пожелания