Imagick из Azure Blob

У меня есть сайт PHP, который в настоящее время извлекает изображения из Azure Blob, записывает их на диск с помощью file_put_contents, а затем imagick читает файл с диска с помощью readImageFile. Я бы предпочел, чтобы это находилось в памяти, чем записывалось на диск, а затем читалось с диска. Как я могу этого добиться? Когда я пытаюсь ReadImageBlob, я получаю следующую ошибку:

Warning: Imagick::readimageblob() expects parameter 1 to be string, resource given in <file> <line>

Ниже приведен фрагмент моего кода (это просто тестовый код, а не производство):

// Get Data from Azure Storage Blob
$blob = $blobClient->getBlob($containerName, $documentPath);

// Get TIF file from Blob and convert to PDF
$im = new imagick();
$im->readImageBlob($blob->getContentStream());
$im->setImageFormat('pdf');

// Echo as PDF
header('Content-Type: application/pdf');
echo $im;

person alexander7567    schedule 23.09.2019    source источник


Ответы (1)


Вы должны иметь возможность использовать stream_get_contents для чтения строки из потока, который у вас есть. Пример:

$im->readImageBlob(stream_get_contents($blob->getContentStream()));
person drussey    schedule 23.09.2019
comment
Большое спасибо! Stream_get_contents () был недостающим элементом! - person alexander7567; 23.09.2019
comment
Я только что кое-что понял ... По какой-то причине отображается только последняя страница PDF-файла ... Так что мне придется вникнуть в это. Я сообщу, если выясню это, но не стесняйтесь добавлять что-нибудь, если вы уже знаете! - person alexander7567; 03.10.2019
comment
Неважно .. Это произошло из-за того, что я очистил свой код перед тем, как опубликовать это. Я быстро поискал в Google и нашел вопрос, который задавал несколько месяцев назад .. stackoverflow.com/questions/54539023/ - person alexander7567; 03.10.2019