使用循环解码base64图像

0 投票
1 回答
2150 浏览
提问于 2025-04-17 20:53

我有一些用base64编码的图片,数量不确定。它们的格式如下:

image0 = """\ iVBORw0KGgoAAAANSUhEUgAAABcAAAATCAIAAAD02QHhAAAAB3RJTUUH3gMEFjA2JHVG0AAAAe5JREFUeJztUzGr6jAYTZoWVAQRKTooOIja0SK4da6DkyCIi39AN531DzgKIoroLoiDk3ZWB3UoCiIqFDq5OBRKaXKHXOLjPnn3Xd76zpYvyTnfd3ICCSHgn8G9rf6UmieEQAgJIRjjFzfHUS4I4RdeWqRX2C78syzTYEsqgDH+lYvHGHMc93g8DoeD1+t1HMc0Tb/fr6oqlWJHKY7HYyKREAThswsIAQCc67qEEF3Xd7tdo9GYTqeWZWUyGYQQFaD6EELbtjVNq1ar2+12u90+Hg82KS8IAiFEURRFUfb7fbvdDgQCAIDZbHY+nwVBqNVqk8lkvV63Wq3RaBSNRk+nk23bsVjs5R3G2HVd13Xv93upVHIcx3Gc+XzebDY1TSsUCoSQdDrd7XYJIeVyebVakd/AQwhp59frNRKJ8DwPAFgsFj6f73a79Xq94XBYr9eXy6Xf7z+fz7IsY4xt2/Z4PMyal+GbzSYej1PucDj8fD4lSer3+8FgMJVK6bqeTCaz2Wyn0xmPx9RN5i5qtVo0IJZlybIsiiIAIJfLGYZhmmalUkEIDQaDfD6vqqokSZfLpVgshkIh9nDf54X6ZxiGKIpshC+B/GShJZpdllrXdQEACCHWNj2JMUYI/Sy77DJr/i2+Z/kbvP/T/1k+AL7rRN+R/gD6AAAAAElFTkSuQmCC """

image1 = """\ iVBORw0KGgoAAAANSUhEUgAAABcAAAATCAIAAAD02QHhAAAAB3RJTUUH3gMEFjE42tZalgAAAoRJREFUeJyNUz1PKlEQnbl3YzTYEBshodpGo62hIdgaExsLKiojP4DChD9AI50/wGggsSAhivEnYAKJ0kEAjRUaCODKx25C9t6xGFzfU3nPKe7encycPXPmLBIRAPDpuu7V1dV4PAYApZRlWQcHB36/HwC01oiIiESEiLVajYg2NjYAAAAEPxjFtm2t9cPDQzabDQQCe3t7fr9/PB4Ph0MhBCJalmXb9u3tbSKRuLi4uLy8LJfLRGTMwIQAgOXl5VgsNplMQqHQ7u4uAJRKpfv7+2azeXh4aJrm9vZ2oVAYDoeIGIlEbNv2+Xx/cSEirbVS6u7uzjRNpdRgMMhkMtFotNPprKys5HI5RDRNs9VqhcPhnZ2d/f39zc1NRJyhICIAGIYhpXx9fV1bW5NSPj4+DgaDRqORTqcrlcrq6urW1tbR0VGpVFpfXweATqejtSaiGQrTQcR2u+04TjAY1FqHQqGFhQUiur6+Ho1Gi4uLhmFMp9NkMnl2dnZ8fNzr9Vj42Sw8jta63++zYK7rElGz2cxms41Gg4hSqVQ6na5Wq0RULBbr9ToRKaWICHk7X4J58ckZ13UNw3AcZ2lpyct7l08Ur1NrLaXkV6UU79grYON49mFNP3XxUlJKvhCRlHIymdzc3Dw9Pf3ZLKVkdO4SMCdY/F6vd3Jywn5pt9sM/UM1zQlGeXt76/f7RBSPx5+fn9lQ34uNeVyYqs/nk1Ken59Ho9FAIOC6Ls/7JeZOBABKKSllrVYDgEQiwTJ5W/s/ChtBCJHP51Op1HQ6PT09dRwHPv7b33Jh/bvdbiQSEUK8vLxYljUPZY7mH4x+5P89flaXodl13mc8Xb9D/4vL76m9A4fr1aGVlymDAAAAAElFTkSuQmCC """

image2 = """\ iVBORw0KGgoAAAANSUhEUgAAABcAAAATCAIAAAD02QHhAAAAB3RJTUUH3gMEFjE42tZalgAAAoJJREFUeJyVUj1La0EQndm9+BUJhqRQIdVtDIZ0wUa0ExFsLPwBYho7i0D+QArjfxAhgtiIH5U/IIKCRkEiSUxpccHchBhvINydsdiw5uUl8t4pdmeHnbNnzg4yMwDo1ff9y8vLdrsNAEqpZrO5s7MTCoUAgIgQERGZGRFLpRIzLy4uAgAACL1pFs/ziOjt7S2fz8/NzW1uboZCoXa73Wq1hBCI2Gw2Pc+7vb1NpVKnp6cXFxd3d3fMbPXIhACA6enp7e3tr6+vaDS6sbEBAIVC4fHxsVKp7O7u2ra9urp6fn7earUQcXl52fO8QCDwhxZmJiKl1MPDg23bSinXdQ8PD1dWVhzHCYfDJycniGjbdrVaXVpaWl9f39raisfjiNhjQUQAsCxLStloNBYWFqSUtVrNdd1yuZzNZu/v72dnZ5PJZDqdLhQKsVgMABzHISJm7rFoOYj4/v7e6XTm5+eJKBqNjo2NMfP19fXn5+fExIRlWd1ud39///j4OJfLfXx8aON7veh2iKher2vDfN9n5kqlks/ny+UyM2cymWw2WywWmfnq6ur19ZWZlVLMjPp3BqB16VVnfN+3LKvT6UxOTpq8CX5YTCURSSn10YyJuaAz/fkfd43BiCil1IEu8zzv5uamVCr1F0sp9QTpKgEjoEUBQK1Wcxxnb2/v6elJE/192RrFoh9k5kQikUgknp+fx8fHjeQB/KZFKUVEZ2dnyWQyEonEYjHd0fDbo6Anqtvtuq67trZWrVbN1w5gZEdEJIR4eXkJBoONRmNqampmZmaoKb/5Ypo6OjoSQhwcHEQikVEdDZ86w9JfM3D8Jy1mxvQziCiEMPF/aDF0Qyv78Q28N9fZLnpYLAAAAABJRU5ErkJggg== """

我可以成功解码它们,方法是:

    imageToShow = base64.b64decode(image0)
    stream1 = cStringIO.StringIO(imageToShow)
    bmp1 = wx.ImageFromStream(stream1)
    self.image_spot0.SetBitmap(wx.BitmapFromImage(bmp1))

    imageToShow = base64.b64decode(image1)
    stream1 = cStringIO.StringIO(imageToShow)
    bmp1 = wx.ImageFromStream(stream1)
    self.image_spot1.SetBitmap(wx.BitmapFromImage(bmp1))

    imageToShow = base64.b64decode(image2)
    stream1 = cStringIO.StringIO(imageToShow)
    bmp1 = wx.ImageFromStream(stream1)
    self.image_spot2.SetBitmap(wx.BitmapFromImage(bmp1))

因为可能有3张、100张、300张,甚至5000张编码的图片,我想用一个循环来处理解码。

当我尝试使用以下代码时:

    image_group = ['image0', 'image1', 'image2']
    for img in image_group:
        imageToShow = base64.b64decode(img)

我遇到了一个填充错误,我猜测数据没有正确传递给base64.b64decode(),而只是传递了字符串“image0”。希望能得到一些帮助。

1 个回答

0

你把变量名和相同值的字符串搞混了。

解决方法是这样写:

image_group = ['image0', 'image1', 'image2']

你甚至可以通过合并声明来简化代码,比如:

image_group = [
    "iVBORw0KGgoAAAANSUhEUgAAA...",
    "iVBORw0KGgoAAAANSUhEUgAAA...",
    "iVBORw0KGgoAAAANSUhEUgAAA..."
]

撰写回答