如何从下载的图像创建 PHP 图像对象?

How to create PHP image object from downloaded image?

所以我一直在使用这种方法来调整通过 PHP 中的表单上传的图像的大小:

list ($width, $height, $type, $w)=getimagesize($_FILES[$imageName]['tmp_name']);
$info = getimagesize($_FILES[$imageName]['tmp_name']);

效果很好 - 允许调整大小并转换为 png。

现在我需要做同样的事情 - 但对于下载的图像,例如给定在线图像的 url,例如 http://colorvisiontesting.com/images/plate%20with%205.jpg

从外观上看,这可以用 CURL 完成,但我不太清楚如何从中创建图像对象。这是我目前所拥有的:

$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($c, CURLOPT_URL, $imageURL);
$curlImage = curl_exec($c);
$err  = curl_getinfo($c,CURLINFO_HTTP_CODE);
curl_close($c);

list ($width, $height, $type, $w)=getimagesize($curlImage);
$info = getimagesize($curlImage);

但这在 getimagesize 处失败了 - 我不知道这里的正确方法是什么。有什么想法吗?

getimagesize 函数适用于文件名(本地或远程),但不适用于表示图像内容的字符串。

您可以:

  1. 将该内容保存到本地文件(例如使用 file_put_contents
  2. 在远程文件上使用 getimagesize 函数(应该可以)。
  3. 使用 getimagesizefromstring(与 getimagesize 相同,但适用于数据而不是文件名)
  4. 使用 imagecreatefromstring(如果您想将 stream/data 转换为图像 (gd) 资源,然后使用 imagesximagesy资源。