我想在对在线图像应用哈希函数后获得指纹密钥。为此,我使用下面的代码:
img_path='''data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB0AAAAaCAYAA ABLlle3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABSBJREFUeNrkVltPY1UY/VpaaMu1kFAiw6Wl3Nva0mHoTEAGhsgwCSTERIwTJ4Y3n3zwB/ADzPg 8Og9GzBhJxmBICI4iNShyKVIuQoGWW4FyGSiFMlCgBdfetgQYCzzpgydpetpzzl7fWutb3z6Ck5MT+rcPIf0Hh+jsj4qKytPzo6MjEolEdHx8TEKhkH+gSrzf7087ODi4he97Y rHYGBUVlS4URjQKhYJvLy4eUtFs7goPevEQCATsS40Cbh0eHhpRgFYmkxkzM5WJhYUFpNEUUmdnJw0NDX8MiGxcjzz7rEQiQd2iafz88ipQGSrMB5Myn2+/FAw1cnmiKiMjQ6z Xv0l6vZ6USiUpFClgL6BXr/ZoeHjEdPNmsQmsg8oIKBA4oZkZB21ubvZeCorqPgWr2wAtUKmUcq1WS7m5uWCkodTUVIqOjn6twry8XPwfQ48efUA6nY5LygTy+Q6pqamJ5ufn9 y71dH9//yOTyRTd0PAuxcbGUFSUhNRq9aVNkZ+fT3FxcTQ2NkbFxcVnCAhDvp5c2r3w7afkZAUBGLK46cmTz2lxcTEsIJOSsddqNTQ4+AckDZxeY+fh4ngOFKa3Dw9baWNjA93 rp6SkJBoYsLBiTu/xer00OjpGLS0t9PjxZ+RwzFBZWSn8m0GByxzoquyfkzcyMrLf5XJt2e0OeWZmBuQyQnIfLS8v09zcHAfY2dkhmSya2HVmQ0pKCkmlEoqIiKCnT7/gdshkU qqpqeH/XQmK3C14PB7r+Ph4pU73HnV1ddHCwiL5/YeUmJjIG4XFRCKRopAlmp2dQ1yGqLy8nNDd5PFsgXUZW4cDnpX7ssjsQOJ+q3Wosrr6bf7w3bvllJOTzc8nJmz04sWPtLq 6yoeHXJ6A7s2n+Ph4MhiKkFl2bYUSEhJwTR7K+eWgzAssPgB5fVhUUlVVRf39/dTc/DVYeNA0MsrOzqaiIgPFxMTwj9PppOnpaW5Fc/NXAP6Z7ty5Tenp6dcDDUo8CgAnJM5h/ jF2BoMebHN4Ubu7Xt4wvb19tL6+zp8pL3+LsrJUyPIbGBrJuN/A5Q3XUK+B4mYnvBixWCw5tbW1nBmbLMxfl2sVjbXHu1qtzqIHD2q4lCxWLJdGo5FaW1uR8Viqq6vjk+lKUCY HqvNjnP06NTX9DpgIzeZfuE8MnDG6cSOVe2i326m7uxuN5uQN8/Dh+3xEdnT8wHMeGonX8jQYnd9crpVteCW/f78a3evnBc3OzlJbWxutra3xRVUqFWfLimAdzdhjyPNma2z88 HQqXSlv8JjE9vXn+PhEmVaro+fPv+P5TE5OxtjLo/r6egwSMTxdQ3Rc1NPzO98GWW41mgKy2Wz8+rU9Dcq8D2J9o6OjZSw6paWlPDa8mslJ+GvmA4NNqpQUBaRXg3UWbFgDkIB WVlZoe3v7esPhwkjscTjsnwQCx8K4uFh69uwbHn62o6SlpVNlZQWX1evdAbNJam9vR3TsPL/MW5TOs/1PbMOCospBt3trYWrKpmQDgA11hUKBjoygpaVFvA2YyWod5uPR7XbzY WAylVBJSQkviv3/8uU68z7q2qDYvFdR5QD8UjLpWCxaW78n5Jc10iqkDYCJgHnJdhqxWEQjIyNksQzyxvt7BJ5Apbj1a3Vv0NcAJo65r6+/AQvtYWDYsJCVxQlgNqlU6sf9gtA zXu/uaZeHJhHui8Cp58qcXmA7BEbtADMDpAOST7FiQnvlhSL5y1u40XcO53/z3vuXAAMAGHpywSLn9WUAAAAASUVORK5CYII='''
response = requests.get(img_path, stream = True)
key = imagehash.average_hash(Image.open(response.raw))
运行后,出现以下错误:
requests.exceptions.InvalidSchema: No connection adapters were found for 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB0AAAAaCAYAA ABLlle3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABSBJREFUeNrkVltPY1UY/VpaaMu1kFAiw6Wl3Nva0mHoTEAGhsgwCSTERIwTJ4Y3n3zwB/ADzPg 8Og9GzBhJxmBICI4iNShyKVIuQoGWW4FyGSiFMlCgBdfetgQYCzzpgydpetpzzl7fWutb3z6Ck5MT+rcPIf0Hh+jsj4qKytPzo6MjEolEdHx8TEKhkH+gSrzf7087ODi4he97Y rHYGBUVlS4URjQKhYJvLy4eUtFs7goPevEQCATsS40Cbh0eHhpRgFYmkxkzM5WJhYUFpNEUUmdnJw0NDX8MiGxcjzz7rEQiQd2iafz88ipQGSrMB5Myn2+/FAw1cnmiKiMjQ6z Xv0l6vZ6USiUpFClgL6BXr/ZoeHjEdPNmsQmsg8oIKBA4oZkZB21ubvZeCorqPgWr2wAtUKmUcq1WS7m5uWCkodTUVIqOjn6twry8XPwfQ48efUA6nY5LygTy+Q6pqamJ5ufn9 y71dH9//yOTyRTd0PAuxcbGUFSUhNRq9aVNkZ+fT3FxcTQ2NkbFxcVnCAhDvp5c2r3w7afkZAUBGLK46cmTz2lxcTEsIJOSsddqNTQ4+AckDZxeY+fh4ngOFKa3Dw9baWNjA93 rp6SkJBoYsLBiTu/xer00OjpGLS0t9PjxZ+RwzFBZWSn8m0GByxzoquyfkzcyMrLf5XJt2e0OeWZmBuQyQnIfLS8v09zcHAfY2dkhmSya2HVmQ0pKCkmlEoqIiKCnT7/gdshkU qqpqeH/XQmK3C14PB7r+Ph4pU73HnV1ddHCwiL5/YeUmJjIG4XFRCKRopAlmp2dQ1yGqLy8nNDd5PFsgXUZW4cDnpX7ssjsQOJ+q3Wosrr6bf7w3bvllJOTzc8nJmz04sWPtLq 6yoeHXJ6A7s2n+Ph4MhiKkFl2bYUSEhJwTR7K+eWgzAssPgB5fVhUUlVVRf39/dTc/DVYeNA0MsrOzqaiIgPFxMTwj9PppOnpaW5Fc/NXAP6Z7ty5Tenp6dcDDUo8CgAnJM5h/ jF2BoMebHN4Ubu7Xt4wvb19tL6+zp8pL3+LsrJUyPIbGBrJuN/A5Q3XUK+B4mYnvBixWCw5tbW1nBmbLMxfl2sVjbXHu1qtzqIHD2q4lCxWLJdGo5FaW1uR8Viqq6vjk+lKUCY HqvNjnP06NTX9DpgIzeZfuE8MnDG6cSOVe2i326m7uxuN5uQN8/Dh+3xEdnT8wHMeGonX8jQYnd9crpVteCW/f78a3evnBc3OzlJbWxutra3xRVUqFWfLimAdzdhjyPNma2z88 HQqXSlv8JjE9vXn+PhEmVaro+fPv+P5TE5OxtjLo/r6egwSMTxdQ3Rc1NPzO98GWW41mgKy2Wz8+rU9Dcq8D2J9o6OjZSw6paWlPDa8mslJ+GvmA4NNqpQUBaRXg3UWbFgDkIB WVlZoe3v7esPhwkjscTjsnwQCx8K4uFh69uwbHn62o6SlpVNlZQWX1evdAbNJam9vR3TsPL/MW5TOs/1PbMOCospBt3trYWrKpmQDgA11hUKBjoygpaVFvA2YyWod5uPR7XbzY WAylVBJSQkviv3/8uU68z7q2qDYvFdR5QD8UjLpWCxaW78n5Jc10iqkDYCJgHnJdhqxWEQjIyNksQzyxvt7BJ5Apbj1a3Vv0NcAJo65r6+/AQvtYWDYsJCVxQlgNqlU6sf9gtA zXu/uaZeHJhHui8Cp58qcXmA7BEbtADMDpAOST7FiQnvlhSL5y1u40XcO53/z3vuXAAMAGHpywSLn9WUAAAAASUVORK5CYII='
请帮我解决这个错误。
Python
requests
默认情况下不处理数据 URL。这就是错误消息“未找到连接适配器”的含义。 Python requests
能够处理 http 和 https,但数据 URL 却截然不同。
如果您的
img_path
字符串以“data:”开头,那么最简单的方法是以不同于处理 URL 的方式处理该 img_path
值。
请参阅下面的一些示例代码,这些代码处理以下情况:您有一个以“data:”开头的数据 URL,并且您想要保存以 base64 编码的二进制数据。
if meta_og_image_content.startswith("data:"):
# e.g., content="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeUAAACeEAIAAADTU..."
first_128 = meta_og_image_content[:128]
logger.info(
f"found og:image inline data: '{first_128}...'"
)
match = re.match(
r"^data: *([a-z]+/[a-z\-\+]+) *; *", meta_og_image_content
)
if match:
len_match = len(match.group())
reported_mimetype = match.group(1)
meta_og_image_content = meta_og_image_content[len_match:]
if meta_og_image_content.startswith("base64"):
match = re.match(r"^base64 *[;,] *")
if match:
len_match = len(match.group())
meta_og_image_content_encoded = meta_og_image_content[
len_match:
]
# using base64, convert meta_og_image_content_encoded to binary data and save to a temp file
local_file_with_og_image_inline_data_decoded = (
config.settings["TEMP_DIR"]
+ f"og-image-via-inline-data-{id}"
)
binary_data = base64.b64decode(
meta_og_image_content_encoded
)
with open(
local_file_with_og_image_inline_data_decoded,
mode="wb",
) as file:
file.write(binary_data)
og_image_is_inline_data = True
logger.info(
f"saved og:image base64 inline data to {local_file_with_og_image_inline_data_decoded} {reported_mimetype=} {url=}"
)
og_image_inline_data_decoded_local_path = (
local_file_with_og_image_inline_data_decoded
)