Функция для работы с изображениями BETA! (Imagick)

  1. <?php
  2. /*
  3. string $pic - исходный файл
  4. string $save_as - имя обработанного файла
  5. array $prop - Размер изображения
  6. boolean $save_animation - Сохранение анимации при работе с .gif
  7. boolean $save_prop - Сохранение пропорций изображения
  8. array $corners - Скругление углов
  9. */
  10.  
  11. /*Примеры использования:
  12.  
  13. # Получим file.png размером не превышающий 100x100
  14. resize('file.jpeg', 'file.png', array(100, 100));
  15.  
  16. # Получим file.png с размером 100x100, даже если исходный был 16x16
  17. resize('file.jpeg', 'file.png', array(100, 100), 0, 0);
  18.  
  19. # Получим file.png с размером не превышающий 100x100 и закругленными углами на 100 градусов
  20. resize('file.jpeg', 'file.png', array(100, 100), 0, 1, array(100, 100));
  21. */
  22.  
  23. function resize ($pic, $save_as, $prop, $save_animation = false, $save_prop = true, $corners = array ()) {
  24.  
  25.         $format = functions::format($pic);
  26.  
  27.         $thumb = new Imagick();
  28.  
  29.         $source = new Imagick($pic);
  30.  
  31.         foreach ($source as $thumb) {
  32.  
  33. if ($save_prop) {
  34.  
  35.  
  36.     if ($thumb->getImageHeight() > $prop[0])
  37.         $thumb->thumbnailImage(0, $prop[0]);
  38.  
  39.     if ($thumb->getImageWidth() > $prop[1])
  40.         $thumb->thumbnailImage($prop[1], 0);
  41.  
  42. } else
  43.  
  44.             $thumb->thumbnailImage($prop[0], $prop[1]);
  45.  
  46.     if (isset($corners[0]) || isset($corners[1]))
  47.  
  48.         $thumb->roundCorners($corners[0], $corners[1]);
  49.  
  50.         $thumb->setImagePage($thumb->getImageWidth(), $thumb->getImageHeight(), 0, 0); 
  51.  
  52.             if ($save_animation == false) break;
  53.  
  54.         }
  55.  
  56.         $thumb->setFirstIterator();
  57.  
  58.     if ($save_animation && $format == 'gif') $save = $thumb->writeImages($save_as, true);
  59.  
  60.         else $save = $thumb->writeImage($save_as);
  61.  
  62.         $thumb->destroy();
  63.         $source->destroy();
  64.  
  65.             return $save;
  66.     }
  67. ?>
Это BETA версия моего кода.
По мере возможности, буду дорабатывать.
И помните, gd уже умер.

Реклама

Мы в соцсетях

tw tg yt gt