işlemek için ben bir şeffaf noktanın bir görüntü akışı (PNG veya GIF)PHP komut dosyası tek şeffaf piksel (PNG veya GIF)
Kullanmak için kolay bana gösterebilir misiniz dönecektir bir PHP oluşturmak zorunda çözüm?
işlemek için ben bir şeffaf noktanın bir görüntü akışı (PNG veya GIF)PHP komut dosyası tek şeffaf piksel (PNG veya GIF)
Kullanmak için kolay bana gösterebilir misiniz dönecektir bir PHP oluşturmak zorunda çözüm?
Şeffaf 1x1 PNG:
header('Content-Type: image/png');
echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=');
Şeffaf 1x1 GIF: İnsanların sorularına
header('Content-Type: image/gif');
echo base64_decode('R0lGODlhAQABAJAAAP8AAAAAACH5BAUQAAAALAAAAAABAAEAAAICBAEAOw==');
Merak ediyordum, neden hiçbir şeyi yankılamaya ihtiyacı var? Testlerimde piksel geri gönderilmese bile, php hala işareti izler. – jerrymouse
@jerrymouse Görüntü döndürmezse, e-posta görüntüleyicisi kullanıcıya bir çeşit hata sembolü gösterebilir. – Brilliand
kaç yanıtlar: görüntünün içeriğini echo zorunda
. Üstbilgi, metni değil, resmi döndürdüğünüzü gösterir. Yani eğer başlık döndürdüyseniz, sadece bir başlık - veri yok. O zaman sadece görüntü :)
okuma dosyası iyi değil göndermek, görüntünün veri çıktısını yapılır, bu işe yarayabilir, ancak Sjoerd tarafından ana cevap gösterilen gibi ham verileri dönmek daha iyidir. Sadece bir okuma işlemini kaydettiğiniz için. Diskten okumak yavaş görevdir. Artık günler SSD diskleriyle hızlandı, ama yine de. Diske G/Ç hayır daha iyi.
Hatta base64 kod çözme olmadan bu kodu vardı, ama bu görüntü beyaz renktedir:
header('Content-Type: image/gif');
// 1x1px white gif
die("\x47\x49\x46\x38\x37\x61\x1\x0\x1\x0\x80\x0\x0\xfc\x6a\x6c\x0\x0\x0\x2a\x0\x0\x0\x0\x1\x0\x1\x0\x0\x2\x2\x44\x1\x0\x3b");
Belki birisi bu tür veri dizesi için herhangi bir dosyayı dönüştürmek için nasıl bilir?
PHP 5.4 ve sonraki sürümlerde, base64_decode'dan iki kat daha hızlı olan hex2bin (boş GIF dosyası ile test edilmiştir) kullanmak mümkündür. Görüntü çıkışı için kod şöyle olacaktır:
Şeffaf 1x1 PNG:
header('Content-Type: image/png');
die(hex2bin('89504e470d0a1a0a0000000d494844520000000100000001010300000025db56ca00000003504c5445000000a77a3dda0000000174524e530040e6d8660000000a4944415408d76360000000020001e221bc330000000049454e44ae426082'));
Şeffaf 1x1 GIF:
echo bin2hex(base64_decode($data));
:
header('Content-Type: image/gif');
die(hex2bin('47494638396101000100900000ff000000000021f90405100000002c00000000010001000002020401003b'));
Kolayca onaltılıya base64 olarak kodlanmış veri dönüştürebilirsiniz
Veya bir dosya:
echo bin2hex(base64_decode(file_get_contents($filename)));
Bununla birlikte, lkeas Liesis tarafından önerilen yerel PHP kaçış yöntemini kullanmak, benim referansıma göre, base64_decode değerinden yaklaşık 12.5 kat daha hızlıdır. Ve hemen hemen her PHP sürümü ile çalışır.İşte kod parçacıkları şunlardır:
Şeffaf 1x1 PNG:
header('Content-Type: image/png');
die("\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x00\x01\x00\x00\x00\x01\x01\x03\x00\x00\x00\x25\xdb\x56\xca\x00\x00\x00\x03\x50\x4c\x54\x45\x00\x00\x00\xa7\x7a\x3d\xda\x00\x00\x00\x01\x74\x52\x4e\x53\x00\x40\xe6\xd8\x66\x00\x00\x00\x0a\x49\x44\x41\x54\x08\xd7\x63\x60\x00\x00\x00\x02\x00\x01\xe2\x21\xbc\x33\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82");
Şeffaf 1x1 GIF:
header('Content-Type: image/gif');
die("\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x90\x00\x00\xff\x00\x00\x00\x00\x00\x21\xf9\x04\x05\x10\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x04\x01\x00\x3b");
böyle bir dize oluşturma (bir zamanlar bitti olarak, bu kötü kokan düzenli ifadeler ile çok kolay
echo preg_replace('/../','\\x\0',bin2hex($data));
Veya bir dosyadan: t) hızlı çalışmak zorunda
Linux'taecho preg_replace('/../','\\x\0',bin2hex(file_get_contents($filename)));
ilk Şeffaf 1x1 PNG: eksik bir sonlandırma braketine sahip:)); – popas
konsola yazarak biçimine dönüştürebilirsiniz:
hexdump -v -e '"\\\x" 1/1 "%X"' image.gif; echo
daha iyi bu bir statik dosya haline getirmek değil midir? – mbq
Bu izleme amaçlıysa izleme işlemini yapan PHP betiğini oluşturabilir, ardından normal, boş bir GIF pikseli görüntüsünü okumak için 'readfile' kullanabilirsiniz. –
Martin, evet takip ediyor, ama bir dosyadan okumak istemiyorum. Sjoerd'ın çözümü tam olarak ihtiyacım olan şeydi, ama yine de teşekkürler! –