2012-09-09 16 views
7

我知道它可以使用imagecreatefromjpeg(),imagecreatefrompng()等與URL作爲'文件名'與fopen(),但我無法啓用包裝由於安全問題。有沒有辦法將URL傳遞給imagecreatefromX()而不啓用它們?我可以使用URL作爲imagecreatefromjpeg()的源而不啓用fopen包裝?

我已經使用捲曲,而那也是是給我的問題也試過:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,"http://www.../image31.jpg"); //Actually complete URL to image 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$data = curl_exec($ch); 
curl_close($ch); 

$image = imagecreatefromstring($data); 
var_dump($image); 

imagepng($image); 
imagedestroy($image); 
+0

var_dump說什麼? – FilmJ

+0

所以我不知道你正在使用的URL,但我只是自己測試這個,並且似乎工作。我在一些項目中將ImageMagick與這種方法結合使用,出於安全原因,我們需要使用代理服務器,所以這可能是您的問題? – FilmJ

+0

var_dump說:類型(gd)的資源(65) – iRector

回答

17

您可以使用cURL下載文件,然後將結果輸入imagecreatefromstring

例子:

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $imageurl); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // good edit, thanks! 
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); // also, this seems wise considering output is image. 
    $data = curl_exec($ch); 
    curl_close($ch); 

    $image = imagecreatefromstring($data); 
+0

+1,這比我使用臨時文件的建議更好,我嘗試尋找類似'imagecreatefromstring'的東西,但在其他所有'imagecreatefrom *'函數中錯過了它。 –

+0

+1,didn 't知道imagecreatefromstring。好的提示! –

+0

Alain thanks f或者CURLOPT_RETURNTRANSFER,我已經忘記了那個,我也加了CURLOPT_BINARYTRANSFER ...似乎有道理。 – FilmJ

0

你可以隨時下載圖像(例如用捲曲)到一個臨時文件,然後加載從圖像文件。

相關問題