我想用PHP將圖像添加到動態生成的頁面(我使用自己的模板系統)。PHP:如何輸出圖像文件?
注意:出於安全原因,我管理圖像訪問。
包含圖像的文件夾位於網站根目錄之上,因此無法通過HTML鏈接進行訪問。
我相信有一種方法,PHP返回一個文件作爲資源,在頭文件中指定類型,(糾正我,如果我錯了)專門爲此設計的函數imagejpeg()
。
請指教,如果可能的話寫一個簡單的例子。
我想用PHP將圖像添加到動態生成的頁面(我使用自己的模板系統)。PHP:如何輸出圖像文件?
注意:出於安全原因,我管理圖像訪問。
包含圖像的文件夾位於網站根目錄之上,因此無法通過HTML鏈接進行訪問。
我相信有一種方法,PHP返回一個文件作爲資源,在頭文件中指定類型,(糾正我,如果我錯了)專門爲此設計的函數imagejpeg()
。
請指教,如果可能的話寫一個簡單的例子。
你需要做的,輸出的圖像文件是什麼,以便:
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");
}
}
這是您的起點,絕不是絕對的指南。探索。
有用的參考資料:
非常詳細的指南,謝謝。 – Dean 2015-03-13 13:11:28
你是正確的,PHP可以將外部和本地文件,然後將其輸出而不泄露其來源,它們輸出設置PHP頭。在PHP.net手冊上查看imagejpeg的各種示例 – Martin 2015-03-13 12:40:40
什麼是您的模板系統?而你的問題聽起來更像是「如何通過PHP頁面輸出圖像」,因爲這不是一個受控制的訪問情況,例如,盜鏈等。 – Martin 2015-03-13 12:41:40
不能只讀「readfile($ location)」;設置標題後? – 2015-03-13 12:42:50