Я создаю легкий инструмент для администрирования базы данных с одним файлом, и я хотел бы связать с ним несколько небольших значков. Каков наилучший способ встраивания изображений в файл HTML / PHP?
Я знаю метод с использованием PHP, где я бы назвал тот же файл параметром GET, который выводил бы жестко закодированные двоичные данные с правильным заголовком, но это кажется немного сложным.
Могу ли я использовать что-то, чтобы передать изображение непосредственно в объявлении обложки CSS? Это позволило бы мне использовать технику CSS-спрайтов.
Поддержка браузеров здесь не проблема, поэтому более экзотические методы также приветствуются.
РЕДАКТИРОВАТЬ
Кто-нибудь имеет ссылку / пример того, как правильно создавать URL-адрес данных с помощью PHP? Я бы echo 'data:image/png;base64,'.base64_encode(file_get_contents('image.png'))
бы достаточным, но я мог ошибаться.
Решение встроить изображение непосредственно на HTML-страницу было бы использовать схему URI данных
Например, вы можете использовать некоторую часть HTML, которая выглядит так:
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGP C/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IA AAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1J REFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jq ch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0 vr4MkhoXe0rZigAAAABJRU5ErkJggg==" alt="Red dot" />
На странице wikipedia, с которой я связан, есть другие решения:
Но обратите внимание, что эти решения не будут работать во всех браузерах – до вас, чтобы решить, приемлемо это или нет, в вашей конкретной ситуации.
Изменить: чтобы ответить на заданный вами вопрос о том, как правильно создать URL-адрес данных с PHP , посмотрите на странице wikipedia немного ниже схемы URI данных , которая дает эту часть кода (цитирование) :
function data_uri($file, $mime) { $contents = file_get_contents($file); $base64 = base64_encode($contents); return ('data:' . $mime . ';base64,' . $base64); } ?> <img src="<?php echo data_uri('elephant.png','image/png'); ?>" alt="An elephant" />
Что-то вроде этого?
Для одного скрипта на стороне сервера PHP попробуйте кодировку base64 для графики и используйте простую логику контроллера:
<? /* store image mime-type and data in script use base64 */ $images = array('photo.png' => array('mimetype' => 'image/png', 'data' => '...')); /* use request path, eg index.php/photo.png */ $action = substr($_SERVER['PATH_INFO'], 1); switch($action) { case (preg_match('/\.png$/', $action)?$action:!$action): header("Content-Type: {$images[$action]['mimetype']}"); /* use expires to limit re-requests on navigation */ $expires = gmdate('D, d MYH:i:s \G\M\T', filetime(__FILE__) + 365*24*60*60); header("Expires: {$expires}"); $data = base64_decode($images[$action]['data']); header('Content-Length: ' . strlen($data)); echo $data; break; ... } ?>