Использование функции PHP include () для включения изображения в формате png - PullRequest
3 голосов
/ 12 августа 2010

Хорошо, люди, несмотря на самые известные практики, сегодня я решил сделать это:

<img src='<? include("dir/dir/img.png"); ?>'>

С 6 различными изображениями .png.

К сожалению, только 2 из 6 были хорошо видны в браузере.

Почему были показаны только 2 из 6 изображений? Возможно, на пути были биты потери данных?

Спасибо за ваше время:]

Ответы [ 4 ]

12 голосов
/ 12 августа 2010

Не работает, потому что атрибут src тега <img> не должен содержать необработанные данные изображения; скорее он должен содержать URI, который указывает на данные изображения.

Используя data: URI, вы можете встроить изображение непосредственно в ваш (X) HTML-документ. Обратите внимание, что это не будет работать во многих браузерах, таких как более старые версии Internet Explorer. Кроме того, существуют ограничения, такие как ограничение IE8 в 32 КБ для data: URI.

Используя PHP, вот как будет выглядеть ваш код:

<img src='data:image/png;base64,<?php echo base64_encode(file_get_contents("dir/dir/img.png")); ?>'>

Не забудьте изменить часть URL image/png, если тип используемого вами изображения изменится. Например, если вы используете изображение GIF, измените его на image/gif.

5 голосов
/ 12 августа 2010

Это не должно было работать вообще.

Стандартный способ сделать это (включая встроенные изображения в документе HTML вместо указания их URL-адреса) см. В URI data.схема .

3 голосов
/ 12 августа 2010

include() говорит PHP, чтобы проанализировать этот файл.Если по какой-либо причине он содержит <?, у вас будут настоящие проблемы.Вместо этого используйте readfile().

Кроме того, необходимо учитывать и ответ Артефакто.

1 голос
/ 12 августа 2010
< img src='< ?php echo 'data:image/png;base64,' . base64_encode(file_get_contents('dir/dir/img.png')) ; ?> ' >
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...