Задача состоит в том, чтобы прочитать JPEG из местоположения ftp и закодировать его в base64 без какого-либо локального сохранения между ними.
Пока это мое кодирование:
$memstream = fopen('php://memory', 'r+');
if (ftp_fget($ftp_conn, $memstream, $imgLocation, FTP_BINARY)) {
rewind($memstream);
ob_start();
imagejpeg($memstream);
$contents = ob_get_contents();
ob_end_clean();
$vCard->add('PHOTO', base64_encode($contents), ['TYPE' => 'JPEG', 'ENCODING' => 'b']);
fclose($memstream);
}
Но я получаю в строке imagejpeg($memstream);
ошибка: предоставленный ресурс не является допустимым ресурсом изображения ...
Я проверяю ресурс с сохранением загруженного образа локально:
$imgFile = fopen('test.jpg', 'r+');
if (ftp_fget($ftp_conn, $imgFile, $imgLocation, FTP_BINARY)) {
fclose($imgFile);
}
и это хорошо.
Так что я немного озадачен, почему тот же ресурс не должен быть действительным, если я храню его в памяти?