PHP tüm sayfa için görüntü başlığı bildirmek olmadan görüntü oluşturmak

4 Cevap php

Benim web sayfasında PHP ile birkaç görüntü oluşturmak istiyorum. Kendi PHP dosyası her görüntü oluşturma ve daha sonra img etiketleri bu dosyaları ile URL'leri koymadan bunu yapmanın bir yolu var mı?

4 Cevap

I) görüntüyü alıp base64_encode (kullanarak BASE64 kodlamak Eğer HTML biçimlendirmesi (binary enjekte daha güvenli) doğrudan görüntü verilerini ekleyebilirsiniz bu şekilde öneririm.

Bu süreç olan described at this site. Ama Özetle sadece aşağıdaki (sonra "base64," kodlanmış veriler her şey) gibi görünen bir etiket var:

<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub/
/ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcpp
V0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7" 
width="16" height="14" alt="embedded folder icon">

Hayır, content-type başlık sayfa genişliğinde olduğu gibi başka hiçbir yolu yoktur; Eğer bir sayfa için farklı içerik türlerini olamaz. Ama senin görüntülerin her biri için bir PHP dosyası olması gerekmez, bunu şöyle yapabilirsiniz:

<img src="image_generator.php" />

Ve image_generator.php, sen görüntü başlığında ve çıktılarının resmi ilan ve muhtemelen bir sorgu dizesi göre bunu üretmek. Örneğin, URL'ye bir görüntü id ekleyebilirsiniz:

<img src="image_generator.php?id=100" />

Sonra image_generator.php yılında, sadece $_GET['id'] göre görüntü verilerini seçin ve bunu üretmek.

Bir başlık ve çıkış doğrudan görüntü bayt kullanın, ya da bir dosyaya yazmak ve src niteliği koyun ya, başka hiçbir yolu yoktur.

Bir düzgün yaklaşım size src niteliğinde referans belirli bir görüntü oluşturma komut dosyası sahip olmaktır:

<img src="imagecreator.php?img=43" />

Bu komut size açıkça header () yaklaşımı ve çıkış görüntü bayt kullanmalısınız.

<?php
$im = imagecreatefrompng($_GET['img'].".png"); //Silly example

header('Content-type: image/png');

imagepng($im);
imagedestroy($im);
?>

Birçok PHP komut yok olası bir çözüm, sadece bir, bir parametreye bağlı olarak farklı bir görüntü oluşturmak mümkün olacaktır sahip olacaktır.

Örneğin, bu gibi bazı sözde-kod ben daha açık demek istediğimi yapmak gerekir:

$id_img = intval($_GET['id']);
switch ($id_img) {
    case '1':
        // generate image 1
        break;
    case '2':
        // generate image 2
        break;
    case '3':
        // generate image 3
        break;
    default:
        // send some kind of 404 error
}


And your <img> tags would look a bit like these :

<img src="http://yoursite.com/img-generator.php?id=1" alt="..." />
<img src="http://yoursite.com/img-generator.php?id=2" alt="..." />


Still, each time the PHP script is generated, it can only return the headers an data for only one image -- which means it has to be called several times.