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

时间:2016-12-19 22:46:42

标签: php image curl image-processing getimagesize

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

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

这很有效 - 允许调整大小和转换为png。

现在我需要做同样的事情 - 但对于下载的图像,例如给出在线图像的网址,例如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失败了 - 我无法弄清楚这里的正确方法是什么。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

你可以:

  1. 将该内容保存到本地文件(例如,使用file_put_contents
  2. 使用远程文件上的getimagesize功能(它应该可以使用)。
  3. 使用getimagesizefromstring(与getimagesize的工作方式相同,但适用于数据,而不是文件名)
  4. 使用imagecreatefromstring(如果要将流/数据转换为图片(gd)资源,则需要使用{},然后使用资源上的imagesximagesy。< / LI>