У меня есть сайт 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;
1
alexander7567 23 Сен 2019 в 19:03

1 ответ

Лучший ответ

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

$im->readImageBlob(stream_get_contents($blob->getContentStream()));
2
drussey 23 Сен 2019 в 16:56