我已經構建了一個系統,可根據用戶從一堆URL下載圖像,並異步獲取它們 - 如果它們比設備的屏幕更寬,我們會調整大小。麻煩的是,其中一些圖像可能是巨大的1MB +,其中許多圖像下載大型文件並對其進行處理導致舊設備陷入困境。下載圖片並調整大小
所以我想我會介紹一個服務器端的級別,可以處理下載和調整大小......但我的PHP並不好。我猜這是可能的,但在幾天的研究後我找不到任何解決方案。有大量的PHP調整大小腳本,但沒有一個來自URL,它們都來自數據庫或HTML內部。我需要它發送一個圖像的URL,下載它,如果它調整太大,然後發回設備。
更新與捲曲
<?php
$imgurl = $_GET["url"];
function curl_download($Url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Url);
curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$output = curl_exec($ch);
$im = imagecreatefromstring($output);
if ($im !== false)
{
header('Content-Type: image/jpeg');
list($width, $height) = getimagesize($im);
$new_width = 320;
$new_height = 320;
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($im);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_p, null, 100);
}
else
{
echo 'An error occurred.';
}
curl_close($ch);
return $image_p;
}
?>
謝謝,事情是我不想把它發送到瀏覽器那樣,我需要cURL原來收到的數據。有沒有辦法將imagejpeg轉換回數據表單? – daidai
不要首先將其轉換爲圖像對象。如果你設置了'CURLOPT_RETURN_TRANSFER',那麼'curl_exec'會返回數據。 –
我用cURL代碼更新了我的問題。我怎樣才能得到它在數據表單中返回新圖像,就像我最初從'$ output = curl_exec($ ch);' – daidai