Я знаю, что это старый вопрос, но я нашел другой способ сделать это с помощью функции montageImage Imagick. После того, как вы создадите свой объект Imagick, вы должны объявить фон прозрачным, как это:
$Icons->setBackgroundColor( new ImagickPixel('transparent') );
Как только это будет установлено, вы можете запустить объект через montageImage, который создаст montageImage с прозрачным фоном:
$Montage = $Icons->montageImage(new imagickdraw(), "3x2+0+0", "34x34+3+3", imagick::MONTAGEMODE_UNFRAME, "0x0+0+0");
Затем вы можете добавить новое монтажное изображение к вашему составному изображению, убедившись, что используете предопределенную составную константу Imagick COMPOSITE_ATOP или ваши желаемые константы, например:
$Canvas->compositeImage($Montage, imagick::COMPOSITE_ATOP, 5, 5);
Просто наткнулся на этот вопрос и решил опубликовать другое решение на тот случай, если кто-то еще захочет сделать это без ручного цикла.