从 iMDB api 中获取图像 link,如何更改其大小 python
Have an image link from iMDB api, how can I change it's size pyton
我正在尝试使用 IMDb API。到目前为止我的代码是
import http.client
import json
import requests
conn = http.client.HTTPSConnection("imdb-api.com", 443)
payload = ''
headers = {'User-agent': 'Chrome/95.0'}
conn.request("GET", "https://imdb-api.com/en/API/MostPopularMovies/<API_Key>",headers=headers)
res = conn.getresponse()
data = res.read()
convertedDict = json.loads(data.decode("utf-8"))
imagepath = r'venv/files/image.jpeg'
req = requests.get(convertedDict['items'][0]['image'], headers=headers)
with open(imagepath, 'wb') as file:
file.write(req.content)
这让我可以下载第一部热门电影的图像,但是图像真的很小。这是我正在下载的 link。我知道如果我在@之后去掉所有东西,图像会变得更大。有没有办法编辑 link 以便我可以删除 @ 之后的所有内容,甚至可以使用代码编辑 UX 之后的数字?
我尝试用字符串或 URL 操作做的所有事情都会给我一个错误
提前致谢
说明
(下面的代码示例)
以下是获取所需尺寸的更大图像的方法。鉴于此 URL,
https://m.media-amazon.com/images/M/MV5BZWMyYzFjYTYtNTRjYi00OGExLWE2YzgtOGRmYjAxZTU3NzBiXkEyXkFqcGdeQXVyMzQ0MzA0NTM@._V1_UX128_CR0,3,128,176_AL_.jpg
它有一个子串:
UX128_CR0,3,128,176
这包含三个重要部分:
- 前128个按宽度调整图像大小,保持比例
- 第二个128控制图片出现的容器宽度
- 176 控制图像出现的容器高度。
所以,我们可以这样查看结构:
UX<image_width>_CR0,3,<container_width>,<container_height>
例如,要将图像大小加倍:
UX256_CR0,3,256,352_AL_.jpg
更新:在 Python.
中如何操作的示例
import re
resize_factor = 2 # Image size multiple
url = "https://m.media-amazon.com/images/M/MV5BZWMyYzFjYTYtNTRjYi00OGExLWE2YzgtOGRmYjAxZTU3NzBiXkEyXkFqcGdeQXVyMzQ0MzA0NTM@._V1_UX128_CR0,3,128,176_AL_.jpg"
#
# resize_factor : Image size multiplier (e.g., resize_factor = 2 doubles the image size, positive integer only)
# url : full URL of the image
# return : string of the new URL
#
def getURL(resize_factor, url):
# Regex for pattern matching relevant parts of the URL
p = re.compile(".*UX([0-9]*)_CR0,([0-9]*),([0-9]*),([0-9]*).*")
match = p.search(url)
if match:
# Get the image dimensions from the URL
img_width = str(int(match.group(1)) * resize_factor)
container_width = str(int(match.group(3)) * resize_factor)
container_height = str(int (match.group(4)) * resize_factor)
# Change the image dimensions
result = re.sub(r"(.*UX)([0-9]*)(.*)", r"\g<1>"+ img_width +"\g<3>", url)
result = re.sub(r"(.*UX[0-9]*_CR0,[0-9]*,)([0-9]*)(.*)", r"\g<1>"+ img_width +"\g<3>", result)
result = re.sub(r"(.*UX[0-9]*_CR0,[0-9]*,[0-9]*,)([0-9]*)(.*)", r"\g<1>"+ container_height +"\g<3>", result)
return result
#
# Test
#
print (getURL(resize_factor,url))
编辑:打字错误
我正在尝试使用 IMDb API。到目前为止我的代码是
import http.client
import json
import requests
conn = http.client.HTTPSConnection("imdb-api.com", 443)
payload = ''
headers = {'User-agent': 'Chrome/95.0'}
conn.request("GET", "https://imdb-api.com/en/API/MostPopularMovies/<API_Key>",headers=headers)
res = conn.getresponse()
data = res.read()
convertedDict = json.loads(data.decode("utf-8"))
imagepath = r'venv/files/image.jpeg'
req = requests.get(convertedDict['items'][0]['image'], headers=headers)
with open(imagepath, 'wb') as file:
file.write(req.content)
这让我可以下载第一部热门电影的图像,但是图像真的很小。这是我正在下载的 link。我知道如果我在@之后去掉所有东西,图像会变得更大。有没有办法编辑 link 以便我可以删除 @ 之后的所有内容,甚至可以使用代码编辑 UX 之后的数字? 我尝试用字符串或 URL 操作做的所有事情都会给我一个错误
提前致谢
说明
(下面的代码示例)
以下是获取所需尺寸的更大图像的方法。鉴于此 URL,
https://m.media-amazon.com/images/M/MV5BZWMyYzFjYTYtNTRjYi00OGExLWE2YzgtOGRmYjAxZTU3NzBiXkEyXkFqcGdeQXVyMzQ0MzA0NTM@._V1_UX128_CR0,3,128,176_AL_.jpg
它有一个子串:
UX128_CR0,3,128,176
这包含三个重要部分:
- 前128个按宽度调整图像大小,保持比例
- 第二个128控制图片出现的容器宽度
- 176 控制图像出现的容器高度。
所以,我们可以这样查看结构:
UX<image_width>_CR0,3,<container_width>,<container_height>
例如,要将图像大小加倍:
UX256_CR0,3,256,352_AL_.jpg
更新:在 Python.
中如何操作的示例import re
resize_factor = 2 # Image size multiple
url = "https://m.media-amazon.com/images/M/MV5BZWMyYzFjYTYtNTRjYi00OGExLWE2YzgtOGRmYjAxZTU3NzBiXkEyXkFqcGdeQXVyMzQ0MzA0NTM@._V1_UX128_CR0,3,128,176_AL_.jpg"
#
# resize_factor : Image size multiplier (e.g., resize_factor = 2 doubles the image size, positive integer only)
# url : full URL of the image
# return : string of the new URL
#
def getURL(resize_factor, url):
# Regex for pattern matching relevant parts of the URL
p = re.compile(".*UX([0-9]*)_CR0,([0-9]*),([0-9]*),([0-9]*).*")
match = p.search(url)
if match:
# Get the image dimensions from the URL
img_width = str(int(match.group(1)) * resize_factor)
container_width = str(int(match.group(3)) * resize_factor)
container_height = str(int (match.group(4)) * resize_factor)
# Change the image dimensions
result = re.sub(r"(.*UX)([0-9]*)(.*)", r"\g<1>"+ img_width +"\g<3>", url)
result = re.sub(r"(.*UX[0-9]*_CR0,[0-9]*,)([0-9]*)(.*)", r"\g<1>"+ img_width +"\g<3>", result)
result = re.sub(r"(.*UX[0-9]*_CR0,[0-9]*,[0-9]*,)([0-9]*)(.*)", r"\g<1>"+ container_height +"\g<3>", result)
return result
#
# Test
#
print (getURL(resize_factor,url))
编辑:打字错误