Функция для работы с изображениями BETA! (Imagick)
- <?php
- /*
- string $pic - исходный файл
- string $save_as - имя обработанного файла
- array $prop - Размер изображения
- boolean $save_animation - Сохранение анимации при работе с .gif
- boolean $save_prop - Сохранение пропорций изображения
- array $corners - Скругление углов
- */
- /*Примеры использования:
- # Получим file.png размером не превышающий 100x100
- resize('file.jpeg', 'file.png', array(100, 100));
- # Получим file.png с размером 100x100, даже если исходный был 16x16
- resize('file.jpeg', 'file.png', array(100, 100), 0, 0);
- # Получим file.png с размером не превышающий 100x100 и закругленными углами на 100 градусов
- resize('file.jpeg', 'file.png', array(100, 100), 0, 1, array(100, 100));
- */
- function resize ($pic, $save_as, $prop, $save_animation = false, $save_prop = true, $corners = array ()) {
- $format = functions::format($pic);
- $thumb = new Imagick();
- $source = new Imagick($pic);
- foreach ($source as $thumb) {
- if ($save_prop) {
- if ($thumb->getImageHeight() > $prop[0])
- $thumb->thumbnailImage(0, $prop[0]);
- if ($thumb->getImageWidth() > $prop[1])
- $thumb->thumbnailImage($prop[1], 0);
- } else
- $thumb->thumbnailImage($prop[0], $prop[1]);
- if (isset($corners[0]) || isset($corners[1]))
- $thumb->roundCorners($corners[0], $corners[1]);
- $thumb->setImagePage($thumb->getImageWidth(), $thumb->getImageHeight(), 0, 0);
- if ($save_animation == false) break;
- }
- $thumb->setFirstIterator();
- if ($save_animation && $format == 'gif') $save = $thumb->writeImages($save_as, true);
- else $save = $thumb->writeImage($save_as);
- $thumb->destroy();
- $source->destroy();
- return $save;
- }
- ?>
Это BETA версия моего кода.
По мере возможности, буду дорабатывать.
И помните, gd уже умер.
По мере возможности, буду дорабатывать.
И помните, gd уже умер.