Я работаю над проектом, в котором клиент может создать динамическое изображение, объединив разные слои (изображения) в одно изображение, а затем показать это сгенерированное изображение клиенту. В настоящее время мой код выглядит примерно так
$output = uniqid().'.jpg';
exec('convert -size 600x800 xc:white '.$output);
$layers = array(//array of about hundreds of PNG images);
foreach($layers as $key => $singleLayer)
{
$layerIs = $singleLayer['image'];
$positionsXY = explode(',', $singleLayer['xy']);
exec('composite -geometry +'.$positionsXY[0].'+'.$positionsXY[1].' '.$layerIs.' '.$output.' '.$output);
}
$base64 = base64_encode(file_get_contents($output));
unlink($output);
return 'data:image/jpeg;base64,'.$base64;
В приведенном выше коде я создаю белое фоновое изображение, а затем объединяю на нем несколько изображений PNG, таких изображений больше 100. При этом также сохраняется это изображение каждый раз при объединении одного слоя, а затем выводится окончательное изображение клиенту после удаления сгенерированное изображение. Все это занимает около 15 секунд.
Итак, мой вопрос: есть ли у ImageMagick опция, которая позволяет мне сохранять изображение в оперативной памяти вместо сохранения изображения на жестком диске, что, в свою очередь, может ускорить мою обработку?
Хотя я нашел этот http://www.imagemagick.org/discourse-server/viewtopic.php?t=20295, но не мог понять, как это реализовать.
__toString
магического объекта изображения для вывода изображения в переменную. - person Jite   schedule 31.05.2017phpinfo()
и посмотрите, установлен ли он. В зависимости от ответа, я попытаюсь дать вам некоторые дополнительные объяснения. - person Jite   schedule 31.05.2017