首页 > 解决方案 > PIL ValueError:使用 alpha_composite 将透明图像绘制到另一个图像上时图像不匹配

问题描述

我正在制作一个 Python 脚本,它从 API 获取 Fortnite 商品商店,保存所有需要的信息,然后将商店中商品的图像绘制到图像上,但是我得到一个 ValueError:图像不匹配。所有图像都具有相同的分辨率并且都是 PNG 格式,但是 PIL 文档并没有向我解释太多。

# Importing JSON handling library for parsing GET request using requests library
import json
import requests
from PIL import Image
from io import BytesIO

# Creating blank lists & variables for later use
featured_list = []
daily_list = []
inc = 0

# API Endpoint
url = "https://fnbr.co/api/shop"

# API key
key = "ee9f93b4-2a91-4681-96b7-3f9485c9b14c" # key is usually here

# Defining Parameters
headers = {"x-api-key":key}

# Sending GET request
req = requests.get(url = url, headers = headers)

# Converting request data into JSON format
info = req.json()

# Finds appropriate pieces of data for Featured Item Shop
info = info['data']['featured']
for x in info:
    featured_name = x['name']
    featured_rarity = x['rarity']
    featured_icon_url = x['images']['icon']
    print(featured_name, featured_rarity, featured_icon_url)
    if featured_rarity == "marvel":
        imgpath = "/home/pi/Desktop/Item Shop/Rarity/Marvel.png"
        bg = Image.open(imgpath)
        response = requests.get(featured_icon_url)
        f_icon = Image.open(BytesIO(response.content))

        final1 = Image.new("RGBA", bg.size)
        final1 = Image.alpha_composite(final1, bg)
        final1 = Image.alpha_composite(final1, f_icon)
        final1.save("final{}.png".format(inc))
        inc += 1

    else:
        break




# Converts request data into JSON format again to access Daily Item Shop
info = req.json()

# Finds appropriate pieces of data for Daily Item Shop
info = info['data']['daily']
for y in info:
    daily_name = y['name']
    daily_rarity = y['rarity']
    daily_icon_url = y['images']['icon']
    print(daily_name, daily_rarity, daily_icon_url)

我得到的错误:

Traceback (most recent call last):
  File "/home/pi/Desktop/Item Shop/bot.py", line 45, in <module>
    final1 = Image.alpha_composite(final1, f_icon)
  File "/home/pi/.local/lib/python3.8/site-packages/PIL/Image.py", line 2837, in alpha_composite
    return im1._new(core.alpha_composite(im1.im, im2.im))
ValueError: images do not match

任何帮助表示赞赏!

标签: pythonpython-3.xpython-imaging-library

解决方案


推荐阅读