Я использую этот код:
function base64_encode_image ($filename=string,$filetype=string) {
if ($filename) {
$imgbinary = fread(fopen($filename, "r"), filesize($filename));
return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary);
}
}}<img src="<?php echo base64_encode_image ('img/123.jpg','jpg'); ?>" alt='' onerror="this.onerror=null;this.src='img/no-image.jpg';"/>
Проблема заключается в том, что изображение ошибки (no-image.jpg) не отображается, хотя изображение 123.jpg не существует.
Я получаю следующее сообщение об ошибке:
Предупреждение: filesize (): сбой статистики для img / 123.jpg
Любая помощь будет оценена.
Вы смешиваете PHP и JavaScript.
Лучший способ это исправить в вашей функции PHP.
Например:
function base64_encode_image ($filename=string,$filetype=string) {
if (!$filename || !file_exists($filename)) {
$filename = 'img/no-image.jpg';
$filetype = 'jpg';
}
$imgbinary = fread(fopen($filename, "r"), filesize($filename));
return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary);
}
Если файл не существует, он возьмет no-image.jpg здесь.
В своем выводе вы можете опустить onerror
:
<img src="<?php echo base64_encode_image ('img/123.jpg','jpg'); ?>" alt='' />
Других решений пока нет …