Bir görüntü olarak bir PHP sayfası Dönüş

2 Cevap php

Ben (. Jpeg tam olarak) bir görüntü dosyasını okumaya çalışıyorum, ve 'echo' geri sayfa çıkış bu var ama bir görüntüyü görüntülemek olduğunu ...

benim index.php bu gibi bir görüntü bağlantı vardır:

<img src='test.php?image=1234.jpeg' />

ve benim php komut dosyası temelde yapar:

1) read 1234.jpeg 2) echo file contents... 3) I have a feeling I need to return the output back with a mime-type, but this is where I get lost

Bunu anlamaya sonra, hep birlikte dosya adı girişi kaldırma ve görüntü kimliği ile yerini edilecektir.

Ben belirsiz değilim, ya da daha fazla bilgiye ihtiyacınız varsa, lütfen cevap.

2 Cevap

PHP Manual vardır this example:

<?php
// open the file in a binary mode
$name = './img/ok.png';
$fp = fopen($name, 'rb');

// send the right headers
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

// dump the picture and stop the script
fpassthru($fp);
exit;
?>

Önemli noktalar, bir Content-Type başlığı göndermesi gerekir olmasıdır. Ayrıca, <?php ... ?> etiketleri önce veya sonra dosya (satır gibi) herhangi bir ekstra beyaz boşluk dikkatli olmalıdır.

Yorum önerilen gibi, ?> etiketi atlayarak senaryonun sonunda fazladan boşluk tehlikesini önleyebilirsiniz:

<?php
$name = './img/ok.png';
$fp = fopen($name, 'rb');

header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

fpassthru($fp);

Yine de dikkatli yazısının üstündeki beyaz boşluk kaçınmak gerekir. Beyaz alan biri özellikle zor form UTF-8 BOM olduğunu. Bunu önlemek için, "ANSI" (Not Defteri) veya "imza olmadan UTF-8" "ASCII" veya (Emacs) veya benzer olarak script kaydetmek için emin olun.

Bu çalışması gerekir. Bu daha yavaş olabilir.

$img = imagecreatefromjpeg($filename);
header("Content-Type: image/jpg");
imagejpeg($img);
imagedestroy($img);