Tek bir HTML / PHP dosyası görüntüleri gömmek nasıl?

3 Cevap php

Ben hafif, tek dosya veritabanı yönetim aracı oluşturma ve onunla bazı küçük simgeler paket istiyorum. HTML / PHP dosyası görüntüleri gömmek için en iyi yolu nedir?

Ben çıkışı doğru başlığı ile ikili verileri kodlanmış olacak bir GET parametresi ile aynı dosyayı diyebileceğim bir yöntem kullanarak PHP biliyorum, ama bu biraz karmaşık görünüyor.

Ben bir CSS background-image beyanı doğrudan görüntüyü geçirmek için bir şey kullanabilir miyim? Bu bana CSS sprite tekniği kullanmak için izin verecek.

Tarayıcı desteği burada bir sorun değildir, bu nedenle daha fazla egzotik yöntemleri de açığız.

EDIT

Birisi PHP ile Veri URL düzgün oluşturmak için nasıl bir bağlantı / örnek var mı? I echo 'data:image/png;base64,'.base64_encode(file_get_contents('image.png')) yeterli olurdu ama yanlış olabilir rakam olurdu.

3 Cevap

Doğrudan bir HTML sayfası bir görüntüyü gömmek için bir çözüm kullanmak olacaktır data URI scheme

Örneğin, bu gibi görünüyor HTML kısmını kullanabilirsiniz:

<img src="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGP
C/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IA
AAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1J
REFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jq
ch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0
vr4MkhoXe0rZigAAAABJRU5ErkJggg==" alt="Red dot" />

Ben bağlı wikipedia sayfasında başka çözümler vardır:

  • Bir CSS kural olarak görüntü dahil olmak üzere
  • Bazı JavaScript kullanarak.

Senin kadar bu özel durumda, kabul edilebilir olup olmadığına karar vermek için - Ama bu çözümleri tüm tarayıcılarda çalışmaz unutmayın.


Edit : to answer the question you asked about "how to generate Data URL's properly with PHP", take a look a bit lower in the wikipedia page about the Data URI scheme, which gives this portion of code (quoting) :

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" />

Bir PHP sunucu tarafı komut dosyası için grafiğin bir base64 kodlamak denemek ve basit bir kontrolör-style mantığı kullanabilirsiniz:

<?
/* store image mime-type and data in script use base64 */
$images = array('photo.png' => array('mimetype' => 'image/png',
                                     'data' => '...'));
/* use request path, e.g. 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 M Y H: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;
...
}
?>