2015-03-13 88 views
0

我想用PHP將圖像添加到動態生成的頁面(我使用自己的模板系統)。PHP:如何輸出圖像文件?

注意:出於安全原因,我管理圖像訪問。

包含圖像的文件夾位於網站根目錄之上,因此無法通過HTML鏈接進行訪問。

我相信有一種方法,PHP返回一個文件作爲資源,在頭文件中指定類型,(糾正我,如果我錯了)專門爲此設計的函數imagejpeg()

請指教,如果可能的話寫一個簡單的例子。

+1

你是正確的,PHP可以將外部和本地文件,然後將其輸出而不泄露其來源,它們輸出設置PHP頭。在PHP.net手冊上查看imagejpeg的各種示例 – Martin 2015-03-13 12:40:40

+0

什麼是您的模板系統?而你的問題聽起來更像是「如何通過PHP頁面輸出圖像」,因爲這不是一個受控制的訪問情況,例如,盜鏈等。 – Martin 2015-03-13 12:41:40

+0

不能只讀「readfile($ location)」;設置標題後? – 2015-03-13 12:42:50

回答

1

你需要做的,輸出的圖像文件是什麼,以便:

PHP加載該文件中的圖像,這是file_get_contents或以其他方式fopen打開和訪問文件本身。如果文件是一個特定的圖像文件,您可以用imagecreatefromjpeg()打開文件,這將做到這一點,從JPEG源生成一個圖像文件。然後,一旦從文件系統的任何位置(包括Web根目錄以外的目錄)加載文件,PHP就可以輸出上面第1點中捕獲的數據,並帶有一些HTTP頭並直接引用加載的映像。

注:這意味着該PHP文件的唯一輸出是圖像,所以 === file.php image.jpg文件在這種情況下。

所以一個簡單的例子:

圖像存儲在/home/images/image1.jpg

PHP文件從/home/site/imagecall.php

PHP文件說運行:

<?php 
if (file_exists('/home/images/image1.jpg')){ 
    $image = imagecreatefromjpeg('/home/images/image1.jpg'); 
    if ($image){ 
     header('Content-Type: image/jpeg'); 
     imagejpeg($image); 
     imagedestroy($image); 
    } 
    else { 
     die("Image could not be loaded"); 
    } 
} 

這是您的起點,絕不是絕對的指南。探索。

有用的參考資料:

http://php.net/manual/en/function.imagecreatefromjpeg.php

http://php.net/manual/en/function.file-get-contents.php

+0

非常詳細的指南,謝謝。 – Dean 2015-03-13 13:11:28