我希望PHP能夠發送3個圖像中的1個,具體取決於參數$_GET[]
。我現在將圖像作爲三個獨立的PNG,並希望PHP腳本將它們嵌入其中,然後返回指定的圖像。所以,我想要一個PHP腳本而不是3個圖像。這可能嗎?我不需要即時創建特殊圖像,只需打印其中一個。謝謝!讓PHP頁面輸出靜態圖像
回答
如果您的圖片文件,使用PHP的readfile()功能,並輸出之前發送的內容類型標頭:
<?php
$imagePaths = array(
'1' => 'file1.png',
'2' => 'file2.png',
'3' => 'file3.png',
);
$type = $_GET['img'];
if (isset($imagePaths[$type])) {
$imagePath = $imagePaths[$type];
header('Content-Type: image/png');
readfile($imagePath);
} else {
header('HTTP/1.1 404 File Not Found');
echo 'File not found.';
}
?>
編輯:
您還可以通過編碼它們例如嵌入您的圖片腳本作爲Base64,然後將它們嵌入在PHP中的字符串,然後用base64_decode有對其進行解碼,以解救他們
<?php
$imageData = array(
'1' => '...', // Base64-encoded data as string
...
);
$type = $_GET['img'];
if (isset($imageData[$type])) {
header('Content-Type: image/png');
echo base64_decode($imageData[$type]);
} else {
header('HTTP/1.1 404 File Not Found');
echo 'File not found.';
}
?>
你也可以使用PHP來對圖像進行編碼的命令行上。只是在執行命令行(php script.php image1.png image2.png image3.png > output.php
)這個PHP腳本並保存它的輸出,並將其納入你的腳本:
<?php
$imageData = array();
foreach ($argv as $index => $imagePath)
$imageData[(string)($index + 1)] = base64_encode(file_get_contents($imagePath));
echo '$imageData = '.var_export($imageData, true).';';
?>
是的,這是可能的。
這樣做:
- 寫PHP腳本決定哪些圖像輸出。
- 使用header()函數(即內容類型)設置適當的標頭
- 打開文件,讀取它並將其發送到輸出流。
請記住,你可能會從瀏覽器的使用這種方法緩存丟失任何好處......
這不會仍然需要有圖像作爲單獨的文件?有什麼方法將它們嵌入到腳本中? – 2010-09-25 22:05:17
他爲什麼要放寬瀏覽器緩存?圖像仍然通過具有GET參數的唯一URL進行定位。 – doc 2010-09-25 22:06:35
你爲什麼要嵌入一個腳本的圖像? – 2010-09-25 22:07:28
一種快速,但沒有真正安全的,也沒有優雅的方式來做到這一點...
<?php
switch($_GET['type']){
case "1":
$image = "image1.png";
break;
case "2":
$image = "image2.png";
break;
case "3":
$image = "image3.png";
break;
}
header('Content-Type: image/png');
readfile($image);
?>
這個故事的寓意是:用頭()和ReadFile的()= d
我沒有測試以下,但它應該工作。使用此腳本獲取將包含圖像數據的PHP代碼。
要獲取圖像:
$image = base64_encode(file_get_contents("image.png"));
// The string $image now contains your image data.
獲取你的代碼,你想這個圖片的(潛在的巨大)的字符串,每個圖像。打印並複製並粘貼。通過網絡將其作爲文本文件導入。這取決於你。
然後,打印圖像(僅圖像彷彿PHP腳本爲圖像),這樣做:
header("content-type: image/png");
print base64_decode($image);
當然,你可以把每個圖像數據在陣列或類似的東西。
讓我知道它是否有效。
- 1. 在靜態頁面上輸出緩存?
- 2. MAGENTO - 不輸出靜態頁面內容
- 3. 靜態圖像沒有用php生成的頁面緩存
- 4. PHP如何輸出動態圖像
- 5. 從動態PHP頁面生成HTML靜態頁面
- 6. wordpress首頁靜態頁面,和主圖像,並刪除家庭
- 7. PHP輸出圖像發出
- 8. 靜態PHP頁面產生404錯誤
- 9. 靜態HTML頁面
- 10. Link_to靜態頁面
- 11. Django靜態頁面?
- 12. 讓PHP輸出
- 13. 在asp.net中爲「幾乎靜態」的頁面輸出緩存mvc
- 14. 半靜態/動態頁面
- 15. 分頁在靜態頁面
- 16. 靜態頁面的Django站點地圖
- 17. 靜態頁面不顯示圖標
- 18. 在CSS中有靜態圖像的靜態頁腳?
- 19. 靜態圖像。不隨頁面大小移動
- 20. 靜態HTML頁面中的mvc路徑圖像
- 21. 擴展帶有圖像字段的Rainlab靜態頁面
- 22. PHP包括讓整個頁面出現?
- 23. PHP圖像輸出問題
- 24. 生成PHP輸出圖像
- 25. PHP無法輸出圖像
- 26. 靜態頁面(.html)與ASP.NET頁面(.aspx)
- 27. 靜態HTML頁面作爲Sharepoint頁面
- 28. 導軌靜態圖像沒有出現
- 29. 清漆+靜態HTML頁面
- 30. Jboss中的靜態頁面
非常感謝Archimedix!我會看看,這正是我需要的! – 2010-09-25 22:16:38
工作正常!謝謝! – 2010-09-25 22:19:29
使用類似這樣的方法('header()'輸出內容類型期望並使用'readfile')導致IE9默認爲Quirks作爲文檔模式。可以做任何事情告訴IE不要怪,這只是一個圖像? [示例](http://www.homeeducatormom.com/wp-content/uploads/2012/11/orange-scarf1.jpg)(不是我的網站) – veeTrain 2013-07-23 19:35:08