Изображение ошибки не отображается, когда изображение не существует

Я использую этот код:

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

Любая помощь будет оценена.

1

Решение

Вы смешиваете 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='' />
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]