我得到了一个字符串,其中包含图像标题信息,如每个维度的像素数。标题如下:"1 10 10 1 4 LE"
。除此之外,其他图像数据保存在以下base64代码中:"+igSKdAm9CVoJhYnzidqKLsmnyX2JwQo9CYhJgMmaCb5Jo0nMSevJmAnwibIJuEmnyZRJpomNicxJ9gmfSeoJkcmySZAJ/Am2CZZJ78nOSeUJ7km+CWVJpMnyCebJ6UnoiclJ7UmPyY3JgsnwyfGJ7cniSdlJ3oneSajJi8n3ye5Jz4nvCeMJ1onYSdAJ3QnsScLKHsnTCfuJ6MnGCdaJ2onECfUJmcnhicEKAko9yZPJjYn0SY7JmkmKid3J1goDyhOJrIldic="
.
我尝试使用以下代码将这两个字符串组合在一起写入png文件。
import base64
with open("testbild.png", "rb") as img_file:
imageData = base64.b64encode(img_file.read())
print(imageData)
imageHeader = bytearray("1 10 10 1 4 LE")
print(imageHeader)
imageData = "+igSKdAm9CVoJhYnzidqKLsmnyX2JwQo9CYhJgMmaCb5Jo0nMSevJmAnwibIJuEmnyZRJpomNicxJ9gmfSeoJkcmySZAJ/Am2CZZJ78nOSeUJ7km+CWVJpMnyCebJ6UnoiclJ7UmPyY3JgsnwyfGJ7cniSdlJ3oneSajJi8n3ye5Jz4nvCeMJ1onYSdAJ3QnsScLKHsnTCfuJ6MnGCdaJ2onECfUJmcnhicEKAko9yZPJjYn0SY7JmkmKid3J1goDyhOJrIldic="
# Decode base64 String Data
decodedData = base64.b64decode((imageData))
print(decodedData)
print(len(decodedData))
Image = imageHeader + decodedData
# Write Image from Base64 File
imgFile = open('image.png', 'wb')
imgFile.write(Image)
imgFile.close()
我的问题是我如何使用头信息添加到ascii代码或base64,所以我得到最终的png文件回来。
1条答案
按热度按时间5f0d552i1#
嗯,你的base64编码的数据一旦解码,看起来是200字节长。由于数字10在头部出现了两次,字符串
LE
我假设数据对应于little-endian uint 16的10 x10像素图像,灰度像素:如果是这样,你可以像这样提取它:
你可能想也可能不想我应用的对比度增强使其在StackOverflow上可见。这是(放大的)结果: