首页 > 解决方案 > PHP创建的图像没有扩展名,不被视为图像

问题描述

我正在从远程服务器(例如谷歌)加载图像,但 PHP 从不将其视为图像。这是我的代码:

$photo = imagecreatefromstring(file_get_contents("https://some.com/image.jpg"));
$filename = $photo["name"];
$ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); //returns ""
$filepath = $photo["tmp_name"];
is_array(getimagesize($filepath); //returns false

我究竟做错了什么?

标签: php

解决方案


imagecreatefromstring 返回一个图像而不是数组。

$photo = imagecreatefromstring(file_get_contents("https://some.com/image.jpg"));
ob_end_clean();
header('Content-type: image/jpeg');
imagejpeg($photo, null, 80);

如果此代码没有生成图像,则从找出 file_get_contents() 的返回值开始调试。

另外 - 在创建图像(使用任何 imagecreatefrom... 函数)之后,您正在处理图像资源,而不是文件系统或任何其他对象。图像资源没有您尝试提取的信息(名称、路径信息等)


推荐阅读