我已经构建了一个系统,可以从一堆URL中下载图像,具体取决于用户,并异步获取它们 - 如果它们比我们调整大小的设备屏幕更宽。麻烦的是,这些图像中的一些可能是1MB +,其中许多图像和下载大文件并处理它们导致旧设备挣扎。
所以我想我会介绍一个可以处理下载和调整大小的服务器端级别......但我的PHP并不好。我猜这是可能的,但经过几天的研究后我找不到任何解决方案。有大量的PHP调整大小脚本,但没有来自URL,它们都来自数据库或HTML内部。我需要它发送一个图像的URL,下载它,如果它太大调整大小,然后发送回设备。
更新了cURL
<?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;
}
?>
答案 0 :(得分:2)
您可以使用cURL获取图片,CURLOPT_RETURN_TRANSFER
传递给curl_setopt
以获取图片数据。然后,以下步骤应该用于生成调整大小的图像:
imagecreatefromstring
将允许您构建图像对象imagecreate
创建适当大小的新图像imagecopyresampled
用于调整大小imagejpeg
将其发送到浏览器正如@Paul所说,您需要将内容类型设置为image/jpeg
。
答案 1 :(得分:1)
您可以使用cURL或socket下载html页面和图像,然后使用GD2调整图像大小,然后返回浏览器
header("Content-type:image/jpeg");
之后,你在iphone上的应用程序从你的php服务器加载这个php创建的图像。我认为这是以你想要的方式操纵来自其他服务器的所有图像的解决方案。