未找到“data:image/png;base64,

问题描述 投票:0回答:1

我想在对在线图像应用哈希函数后获得指纹密钥。为此,我使用下面的代码:

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 request imagehash
1个回答
0
投票

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
                )
© www.soinside.com 2019 - 2024. All rights reserved.