Задать вопрос

Как ускорить Imagick::compositeImage?

Задача следующая - есть 10 прозрачных png 1300*1600. Мне необходимо их последовательно наложить друг на друга, и полученное изображение уменьшить до определенных размеров. Сперва я делал это без использования imagick:
1. Создавал пустое изображение $thumb = imagecreatetruecolor();
2. Поочередно открывал каждый png через $img=imagecreatefrompng() и добавлял его в $thumb через imagecopy();
3. Ресайзил через imagecopyresampled();
Но качество картинки после imagecopyresampled() было среднее. Поэтому я решил прибегнуть к imagick, и сделал так:
$img = new Imagick();
$img->readImage('первый png');
затем в цикле накладывал изображения друг на друга:
$image2 = new Imagick();
$image2->readImage('png');
$img->compositeImage($image2, Imagick::COMPOSITE_OVER, 0, 0);
ресайзил:
$img->resizeImage('ширина', 'высота', imagick::FILTER_LANCZOS,1);
Качество стало отличным, но увеличилось время работы скрипта. Выяснилось, что основное время занимает накладывание изображений друг на друга через compositeImage();
ВОПРОС №1: Можно ли как-то ускорить работу compositeImage()? В принципе, я могу накладывать картинки друг на друга как и раньше через:
2. Поочередно открывал каждый png через $img=imagecreatefrompng() и добавлял его в $thumb через imagecopy();
но тогда ВОПРОС №2: как мне в imagick открыть $thumb, созданный через imagecreatetruecolor()?
  • Вопрос задан
  • 560 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@shagguboy
1) нет. бери консольные приложухи.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽