使用Pixabay API下载的JPG图片无法在Windows照片查看器打开
解决Pixabay API下载图片后格式不支持的问题
我一眼就看出问题所在啦——你代码里用的pageURL是图片在Pixabay官网的网页链接,不是图片文件的直接下载地址!你把网页内容存成了.jpg后缀,Windows照片查看器当然识别不了,因为这根本不是真正的图片文件。
问题代码分析
看你这段代码:
import urllib.request import python_pixabay pix = python_pixabay.Pixabay('4119664-75cc2144f4a944b21e461e646') # default image search img_search = pix.image_search() cis = pix.image_search() #url to the original image u = cis['hits'][1]['pageURL'] # 这里错了!pageURL是网页链接,不是图片链接 urllib.request.urlretrieve(u, "local-filename.jpg")
pageURL指向的是Pixabay上展示该图片的页面,下载下来的是HTML网页内容,不是JPG图片,所以系统会提示格式不支持。
修正方案
Pixabay API的返回结果里,有专门的图片文件链接字段,比如:
largeImageURL:高清原图的直接链接webformatURL:适合网页展示的中等尺寸图片链接
把代码里的pageURL替换成这些字段就行,修改后的代码如下:
import urllib.request import python_pixabay # 初始化Pixabay客户端 pix = python_pixabay.Pixabay('4119664-75cc2144f4a944b21e461e646') # 执行图片搜索 img_search = pix.image_search() # 获取第二张图片的高清原图链接(注意索引从0开始,[1]是第二张) image_url = img_search['hits'][1]['largeImageURL'] # 下载图片到本地 urllib.request.urlretrieve(image_url, "local-filename.jpg")
额外提示
- 下载前可以先打印
image_url看看,应该是类似https://cdn.pixabay.com/photo/xxxx/yyyy.jpg这种直接指向图片文件的链接 - 如果还是有问题,可以检查下载后的文件大小:网页文件通常只有几KB,而图片文件至少几十KB以上
内容的提问来源于stack exchange,提问作者Almuntasir Abir




