2015-03-31 80 views
0

對於知道PHP的人來說,這看起來像是一個超簡單的問題,但我無法弄清楚如何完成這項工作(可能是因爲我對PHP知之甚少)。與此有關的大多數問題詢問如何將圖像輸出到瀏覽器磁盤,但我想要做到這一點。看下面的例子:將圖像輸出到瀏覽器並寫入磁盤

<?php 

header('Content-type: image/png'); 

$filename = "my_written_image.png"; 
$png_image = imagecreatefrompng('some_fancy_image.png'); 
imagepng($png_image, $filename); 
imagepng($png_image); 

?> 

這是行不通的。該圖像不會顯示在瀏覽器中,但它會工作,如果我刪除此行:imagepng($png_image, $filename);

我猜只能使用imagepng「輸出」一件事,但我將如何完成上述?

+0

你在哪裏得到圖像?它被上傳了嗎? – bloodyKnuckles 2015-03-31 17:11:18

+0

在這個例子中,$ png_image是通過使用imagecreatefrompng(...) – Whyser 2015-03-31 18:53:50

+0

分配和創建的。如果圖像已經在服務器上,那麼您要將它寫入哪個磁盤? – bloodyKnuckles 2015-03-31 19:03:37

回答

0

你應該使用下面的代碼:

<?php 
header('Content-type: image/png'); 
$filename = "my_written_image.png"; 
$png_image = imagecreatefrompng('some_fancy_image.png'); 
file_put_contents($filename, $image); 
imagepng($png_image, $filename); 
?> 

我的服務器沒有開啓,所以我無法測試的代碼,但我認爲這應該工作。

+0

這不起作用,使用這個文件甚至不會創建! :(你也犯了一個錯誤,你的$圖像應該是$ png_image) – Whyser 2015-03-31 18:52:45

+0

好的,多虧了你,我設法發現了什麼錯誤,我意識到在這之前有一個錯誤導致「我的」解決方案(和你的)失敗,我會把它作爲一個單獨的答案發布! – Whyser 2015-03-31 19:03:21

0

好吧,看起來我的原始解決方案確實有效。問題是我正在使用(在我的真實代碼中):if(readfile("myfile.png")),如果找不到,這將返回false,但如果不使用@readfile()(注意@),它也會引發錯誤。該文檔說:

的錯誤信息被打印

我不認爲這會導致整個事情失敗。對不起,我的愚蠢。