Php обрезка изображения класс

imagecrop

Обрезает изображение до заданной прямоугольной области и возвращает полученное изображение. Заданный параметр image не изменяется.

Список параметров

Объект GdImage , возвращаемый одной из функций создания изображений, например, такой как imagecreatetruecolor() .

Обрезанный прямоугольник в виде массива ( array ) с ключами x , y , width и height .

Возвращаемые значения

Возвращает объект обрезанного изображения в случае успешного выполнения или false в случае возникновения ошибки.

Список изменений

Версия Описание
8.0.0 image теперь ожидает экземпляр GdImage ; ранее ожидался корректный gd ресурс ( resource ).
8.0.0 В случае успешного выполнения функция теперь возвращает экземпляр GDImage ; ранее возвращался ресурс ( resource ).

Примеры

Пример #1 Пример использования imagecrop()

В этом примере показано, как обрезать изображение до квадратной области.

$im = imagecreatefrompng ( ‘example.png’ );
$size = min ( imagesx ( $im ), imagesy ( $im ));
$im2 = imagecrop ( $im , [ ‘x’ => 0 , ‘y’ => 0 , ‘width’ => $size , ‘height’ => $size ]);
if ( $im2 !== FALSE ) imagepng ( $im2 , ‘example-cropped.png’ );
imagedestroy ( $im2 );
>
imagedestroy ( $im );
?>

Смотрите также

User Contributed Notes

  • Функции GD и функции для работы с изображениями
    • gd_​info
    • getimagesize
    • getimagesizefromstring
    • image_​type_​to_​extension
    • image_​type_​to_​mime_​type
    • image2wbmp
    • imageaffine
    • imageaffinematrixconcat
    • imageaffinematrixget
    • imagealphablending
    • imageantialias
    • imagearc
    • imageavif
    • imagebmp
    • imagechar
    • imagecharup
    • imagecolorallocate
    • imagecolorallocatealpha
    • imagecolorat
    • imagecolorclosest
    • imagecolorclosestalpha
    • imagecolorclosesthwb
    • imagecolordeallocate
    • imagecolorexact
    • imagecolorexactalpha
    • imagecolormatch
    • imagecolorresolve
    • imagecolorresolvealpha
    • imagecolorset
    • imagecolorsforindex
    • imagecolorstotal
    • imagecolortransparent
    • imageconvolution
    • imagecopy
    • imagecopymerge
    • imagecopymergegray
    • imagecopyresampled
    • imagecopyresized
    • imagecreate
    • imagecreatefromavif
    • imagecreatefrombmp
    • imagecreatefromgd2
    • imagecreatefromgd2part
    • imagecreatefromgd
    • imagecreatefromgif
    • imagecreatefromjpeg
    • imagecreatefrompng
    • imagecreatefromstring
    • imagecreatefromtga
    • imagecreatefromwbmp
    • imagecreatefromwebp
    • imagecreatefromxbm
    • imagecreatefromxpm
    • imagecreatetruecolor
    • imagecrop
    • imagecropauto
    • imagedashedline
    • imagedestroy
    • imageellipse
    • imagefill
    • imagefilledarc
    • imagefilledellipse
    • imagefilledpolygon
    • imagefilledrectangle
    • imagefilltoborder
    • imagefilter
    • imageflip
    • imagefontheight
    • imagefontwidth
    • imageftbbox
    • imagefttext
    • imagegammacorrect
    • imagegd2
    • imagegd
    • imagegetclip
    • imagegetinterpolation
    • imagegif
    • imagegrabscreen
    • imagegrabwindow
    • imageinterlace
    • imageistruecolor
    • imagejpeg
    • imagelayereffect
    • imageline
    • imageloadfont
    • imageopenpolygon
    • imagepalettecopy
    • imagepalettetotruecolor
    • imagepng
    • imagepolygon
    • imagerectangle
    • imageresolution
    • imagerotate
    • imagesavealpha
    • imagescale
    • imagesetbrush
    • imagesetclip
    • imagesetinterpolation
    • imagesetpixel
    • imagesetstyle
    • imagesetthickness
    • imagesettile
    • imagestring
    • imagestringup
    • imagesx
    • imagesy
    • imagetruecolortopalette
    • imagettfbbox
    • imagettftext
    • imagetypes
    • imagewbmp
    • imagewebp
    • imagexbm
    • iptcembed
    • iptcparse
    • jpeg2wbmp
    • png2wbmp

    Источник

    PHP класс для создания эскизов. Класс для обрезки и уменьшения изображений

    PHP класс для создания эскизов. Класс для обрезки и уменьшения изображений

    Вы хотите создать эскиз на PHP, или обрезать изображение с помощью PHP, а так же уменьшить размер изображеия. Этот простой класс для вас.

    Суть

    Эскиз создается единажды для указанного размера и пути файла. Передаем в метод класса относительный путь к файлу, желаемые размеры эскиза, и режим обработки. Режим 1 создаст эскиз вписанный в область исходного изображения. Прелесть данного варианта в том, что изображения лежат в кеше и могут быть отданы nginx-ом без участия PHP.

      class preview  const QUALITY = 95; // Качество эскиза private $cache_dir; // Путь до каталога кэша эскизов private $file_path; // Путь к файлу public $errors; function __construct($file_path = null)  $this->errors = array(); if (file_exists($file_path)) $this->file_path = $file_path; else  $this->errors[] = 'Файл ' . $file_path . ' не найден на жестком диске'; return false; > $this->cache_dir = $_SERVER['DOCUMENT_ROOT'] . '/cache_previews'; if (!is_writable($this->cache_dir)) die('Невозможно записать в ' . $this->cache_dir); > public function get($width = 150, $height = 150, $mode = null)  if (gettype($width) != 'integer' || gettype($height) != 'integer')  $this->errors[] = 'Неверные параметры максимальной ширины или/и высоты'; return false; > $PrevFileName = md5($this->file_path . $width . $height . $mode) . '.jpg'; if (file_exists($this->cache_dir . '/' . $PrevFileName))  return $PrevFileName; > // Получаем размеры сторон исходного изображения $size = getimagesize($this->file_path); // $size[0] ширина // $size[1] высота // Если эскиз-квадрат, вписываем его в область исходного изображения switch ($mode)  case 1 : // Режим вписывания квадратного эскиза // Расчитываем центр изображения, получаем координаты квадратной // области в центре исходного изображения if ($size[0] > $size[1])  /* ---- Если изображение горизонтальное ----- */ $x_e = ceil(($size[0] - $size[1]) / 2); $y_e = 0; $mx = $size[1]; $my = $size[1]; $or = 'Гор'; > else  /* ---- Если изображение вертикальное ----- */ $x_e = 0; $y_e = ceil(($size[1] - $size[0]) / 2); $mx = $size[0]; $my = $size[0]; $or = 'Верт'; > break; default : // full режим // Если исходное изображение меньше требуемого эскиза, // копируем оригинал в кэш эскизов и отдаем имя файла if ($size[0]  $width && $size[1]  $height) copy($this->file_path, $this->cache_dir.'/'.$PrevFileName); return $PrevFileName; > $x_e = 0; $y_e = 0; $mx = $size[0]; $my = $size[1]; $KofOrig = ($size[0] > $size[1]) ? ($size[0] / $size[1]) : ($size[1] / $size[0]); if ($size[0] > $size[1])  // гор $new_w = $KofOrig * $height; if ($new_w > $width)  $new_w = $width; $height = ceil($width / $KofOrig); > $width = ceil($new_w); > else  $new_h = $KofOrig * $width; if ($new_h > $height)  $new_h = $height; $width = ceil($height * $KofOrig); > $height = ceil($new_h); > break; > // процесс ресайза, кропа и т.д. $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($this->file_path); imagecopyresampled( $image_p, // Ресурс нового изображения $image, // Ресурс исходного изображения 0, 0, // Координаты (x,y) верхнего левого угла области в новом изображении $x_e, $y_e, // Координаты (x,y) верхнего левого угла области копируемого исходного изображения $width, // Ширина копируемой области $height, // Высота копируемой области $mx, // Ширина исходной копируемой области $my // Высота исходной копируемой области ); // Сохранение в файл imagejpeg($image_p, $this->cache_dir.'/'. $PrevFileName, self::QUALITY); imagedestroy($image_p); imagedestroy($image); return $PrevFileName; > > 

    Для использования класса, его необходимо подключить. Создать каталог кэша с правами записи для веб сервера. Настроить путь к кэшу в конструкторе класса. Затем создаем новый экземпляр объекта класса, при этом передав параметром абсолютный путь к файлу изображения.

     $preview = new preview($_SERVER['DOCUMENT_ROOT'].'/images/1.jpg'); ?> 

    Теперь из этого объекта методом get мы можем вытягивать различные эскизы. Метод get возвращает короткое имя файла эскиза. По умолчанию эскиз будет со сторонами не превышающими 150 пикселей по большей стороне. Вообще, метод работает таким образом, что рамер стороны эскиза не превысит размер, указанный в параметре для соответствующей стороны. Т.е. если использовать $preview->get(200,500) , то ширина эскиза не привысит 200 пикселей, а высота не превысит 500 px.

     src="/cache_previews/ echo $preview->get(); ?>"> 

    Так же возможно вырезать центр изображения в виде квадратной области. Для этого передается третий параметр, который управляет режимом создания эскиза. Режим «1». В дальнейшем я буду развивать этот клас новыми возможностями и режимами.

     src="/cache_previews/ echo $preview->get(200,200,1); ?>"> 
     // подключаем класс для создания эскизов include './classes/preview.php'; ?>  src="/images/1.jpg" style="float:left;">  // Создаем экземпляр класса. При этом указываем абсолютный путь к файлу изображения $preview = new preview($_SERVER['DOCUMENT_ROOT'].'/images/1.jpg'); ?>  src="/cache_previews/ echo $preview->get(); ?>" style="float:left;">  src="/cache_previews/ echo $preview->get(200,200,1); ?>" style="float:left;">  src="/cache_previews/ echo $preview->get(300,300); ?>" style="float:left;">  src="/cache_previews/ echo $preview->get(100,100,1); ?>" style="float:left;"> 

    Результат работы PHP класса для создания эскизов:

     href="/uploads/img/42/example.jpg" class="fancybox">  alt="Эскизы созданные с помощью PHP" src="/uploads/img/42/example_x200.jpg">  

    Источник

    Обрезка картинок с помощью PHP класса — timthumb.class

    В этой статье, я расскажу о замечательном PHP-классе для обработки изображений — timthumb.class.

    Многие из Вас задавались вопросом, как вставить картинки в определенный блок с фиксированными размерами. И не просто так, а чтобы картинка не деформировалась.

    Как то раз, решая данную задачу наиболее простым способом, и в то же время чтобы все было качественно и оптимизировано, я наткнулся на этот замечательный класс — timthumb.class. Простота его использования меня очень обрадовала, а когда я увидел кэш изображений, то я полюбил timthumb.class еще больше.

    Введу краткий ликбез, кэш — это сохраненные файлы, для вывода, в большинстве случаев без последующей обработки.
    Приведу простой пример, владельцам не очень быстрого интернета будет отчетливо видно, если открыть какой-нибудь загруженный картинками сайт, то его первое открытие будет несколько дольше чем последующее, это достигается за счет того что браузер кэширует изображения, т.е. сохраняет их на Вашем жестком диске.

    Вернемся к нашему timthumb.class. Класс уменьшает/увеличивает заданное изображение, и если оно не подходит под заданный размер, он его пропорционально обрезает.

    Попробуем его применить:
    Возьмем исходное изображение, размером 1024х768 пикселей:

    Обрезка картинок с помощью PHP класса - timthumb.class

    А теперь, предположим, что у нас есть блок 200х500 пикселей, в который нужно как то разместить эту картинку.
    Запускаем локальный веб-сервер и используем timthumb.class:

    И, что самое интересное, timthumb.class создает папку «cache», в которой сохраняется кэшированное изображение, т.е. при следующем выводе с такими же параметрами, timthumb.class откроет это изображение из кэша. С параметрами timthumb.class я познакомлю Вас чуть ниже, а сейчас посмотрим разницу между обычной вставкой изображения в блок 200×500 и обработкой его с помощью timthumb.class.

    Обрезка картинок с помощью PHP класса - timthumb.class

    Это самое простейшее применение timthumb.class, для более сложной обработки изображений используйте все возможности timthumb.class:

    src — Путь к обрабатываемому изображению
    w — Ширина при выводе изображения
    h — Высота при выводе изображения
    q — Качество изображения (0-100), от него зависит размер изображения занимаемого на диске, а соответственно и скорость загрузки изображения в браузере
    a — Позиционирование, от которого будет исходная точка для обрезки изображения. Возможные параметры: c=центр, t=верх, b=низ, r=справа, l=слева.
    zc — Увеличение изображения. Могут быть значения от 0 до 3 включительно.

    И еще очень крутой параметр — фильтры. f:
    1 = negative
    2 = Grayscale – изображение в оттенках серого
    3 = Brightness – изменение яркости изображения. Могут использоваться положительные и отрицательные значения, для увеличения и уменьшения яркости соответственно.
    Пример использования:

    4 = Contrast – Регулировка контрастности изображения. По аналогии с яркостью, для увеличения и уменьшения контрастности изображения необходимо указать значение через запятую. Значения больше 0 снизит контраст, а меньше 0 усиливает контрастность.
    5 = Colorize/ Tint – Применяет цветовой фильтр к изображению. Требует параметры RGBA, их можно подобрать в приложении HTML коды цветов

    Применение фильтра к изображению с помощью PHP класса - timthumb.class

     

    6 = Edge Detect – Выделение краев на изображении
    7 = Emboss – Применение рельефа к изображению
    8 = Gaussian Blur – Размытие изображения. Можно применить несколько раз.
    9 = Selective Blur – Другой тип размытия
    10 = Mean Removal – Использует среднее удаление, чтобы создать «поверхностный» эффект. На словах не объяснишь, пробуйте 😉
    11 = Smooth – Делает изображение более гладким

    Источник

    Читайте также:  Java in practice book
Оцените статью