以下是一个使用Python编写的基于Base64的图像比较示例:
import base64
import numpy as np
from PIL import Image
def compare_images(image1, image2):
# 解码Base64图像数据
img_data1 = base64.b64decode(image1)
img_data2 = base64.b64decode(image2)
# 将图像数据转换为NumPy数组
img_array1 = np.frombuffer(img_data1, dtype=np.uint8)
img_array2 = np.frombuffer(img_data2, dtype=np.uint8)
# 将NumPy数组转换为PIL图像对象
img1 = Image.fromarray(img_array1.reshape((len(img_array1)//3, 3)), 'RGB')
img2 = Image.fromarray(img_array2.reshape((len(img_array2)//3, 3)), 'RGB')
# 比较图像
mse = np.mean((img_array1 - img_array2) ** 2)
return mse
# 测试示例
image1_base64 = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAWdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowNToxNSAxNDowMTo0MzozNzQ4yc28xwAAABFJREFUeNpiZGBgYGAAAAAAGAAEhwqpwAAAABJRU5ErkJggg=="
image2_base64 = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAWdEVYdENyZWF0aW9uIFRpbWUAMjAxOTowNToxNSAxNDowMTo0MzozNzQ4yc28xwAAABFJREFUeNpiZGBgYGAAAAAAGAAEhwqpwAAAABJRU5ErkJggg=="
mse = compare_images(image1_base64, image2_base64)
print(f"Mean Squared Error: {mse}")
在这个示例中,我们首先使用base64.b64decode()
函数将Base64编码的图像数据解码成原始的二进制数据。然后,我们使用NumPy库将二进制数据转换为NumPy数组,并使用Pillow库将NumPy数组转换回图像对象。最后,我们使用均方差(Mean Squared Error,MSE)来比较两个图像的相似度。