检测是否有 API url returns 图像

Detect if API url returns image or not

我有 API $url 应该 return 图像,具体取决于请求。 它要么 return 是一个图像,要么它什么都没有 return 然后我得到错误 Failed to load resource: server responded with a statuf of 404.

为了让您想象我做了什么,我正在发送一个带有图书 ISBN 编号的请求,然后 API 检查数据库中是否有 ISBN 的图书封面,如果有,我会收到图书封面图片 returned,但如果没有,我想改用本地图书图标图片。

我试过这样做

list($width, $height) = getimagesize($url);
echo "Width: ".$width."<br/>";
echo "Height: ".$height."<br/>";

if($width==1 && $height==1){
   echo "<img src='../images/book_cover.png' alt='' class='cover'/>";
}else{
   echo "<img src=$url alt='' class='cover'/>";
}

但是由于 getimagesize() 没有 return FALSE,我收到 php 警告消息。

然后我尝试使用

if(!exif_imagetype($url)){
   echo "<img src='../images/book_cover.png' alt='' class='cover'/>";
}else{
   echo "<img src=$url alt='' class='cover'/>";
}

这有效,但我收到警告 failed to open stream: HTTP request failed

有什么想法可以解决问题并使其合法化吗?

编辑:

echo "<img src=$url onerror=\"this.onerror=null;this.src='../images/book_cover.png';\" alt='' class='cover'/>";

您应该直接在 html

中处理

HTML if image is not found

否则你仍然可以检查 url 是否存在 curl 或 file_get_contents 但这会更慢