2014-03-05 2 views
0

base64를 사용하여 인코딩 된 알 수없는 이미지 수가 있습니다. 그들은 다음과 같은 형식으로되어 있습니다 :루프를 사용하여 base64 이미지 디코드

이미지 0 = "" "\ 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/4vL7 6m9A4fr1aGVlymDAAAAAElFTkSuQmCC "" "

IMAGE2 =" ""\ iVBORw0KGgoAAAANSUhEUgAAABcAAAATCAIAAAD02QHhAAAAB3RJTUUH3gMEFjE42tZalgAAAoJJREFUeJyVUj1La0EQndm9 + + BUJhqRQIdVtDIZ0wUa0ExFsLPwBYho7i0D QArjfxAhgtiIH5U/IIKCRkEiSUxpccHchBhvINydsdiw5uUl8t4pdmeHnbNnzg4yMwDo1ff9y8vLdrsNAEqpZrO5s7MTCoUAgIgQERGZGRFLpRIzLy4uAgAACL1pFs/ziOjt7S2fz8/NzW1uboZCoXa73Wq1hBCI2Gw2Pc + + 7vb1NpVKnp6cXFxd3d3fMbPXIhACA6enp7e3tr6 vaDS6sbEBAIVC4fHxsVKp7O7u2ra9urp6fn7earUQcXl52fO8QCDwhxZmJiKl1MPDg23bSinXdQ8PD1dWVhzHCYfDJycniGjbdrVaXVpaWl9f39raisfjiNhjQUQAsCxLStloNBYWFqSUtVrNdd1yuZzNZu/v72dnZ5PJZDqdLhQKsVgMABzHISJm7rFoOYj4/v7e6XTm5 eJKBqNjo2NMfP19fXn5 + + fExIRlWd1ud39 /// j4OJfLfXx8aON7veh2iKher2vDfN9n5kqlks/NY + + UyM2cymWw2WywWmfnq6ur19ZWZlVLMjPp3BqB16VVnfN 3LKvT6UxOTpq8CX5YTCURSSn10YyJuaAz/fkfd43BiCil1IEu8zzv5uamVCr1F0sp9QTpKgEjoEUBQK1Wcxxnb2/v6elJE/192RrFoh9k5kQikUgknp + fx8fHjeQB/KZFKUVEZ2dnyWQyEonEYjHd0fDbo6Anqtvtuq67 trZWrVbN1w5gZEdEJIR4eXkJBoONRmNqampmZmaoKb/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() 만 실제로 문자열 "이미지 0"에 전달되지 않는 것으로 가정합니다. 어떤 도움을 주시면 감사하겠습니다.

+0

:

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

당신도 같은 선언을 결합하여 줄일 수

이 솔루션은 서면이다 , 가변 값이 아닙니다. 따라서 질문을 "이름으로 로컬 변수의 값을 평가/얻을 수있는 방법"으로 줄일 수 있습니다. 하지만 쉽게 처리 할 수 ​​있도록 배열의 base64 문자열을 선언하는 것이 좋습니다. – kirilloid

+0

@kirilloid. 답변 해 주셔서 감사합니다. 당신이 제안한 것은 제가 이미 작업 한 코드입니다. 따옴표가 없습니다. 내가 처리해야 할 문자열의 수 또는 최소한 문자열의 상한선을 미리 알 수 있다면 제대로 작동합니다. 코드가 실행될 때마다 다양한 수의 문자열을 처리 할 수 ​​있도록 노력하고 있습니다. 배열의 문자열 선언이 해결책을 제공 할 수있는 방법에 대해 자세히 설명해 주시겠습니까? – Karr

+1

사실'image_group = [image0, image1, image2]'라고 쓸 수 있습니다. – kirilloid

답변

0

동일한 이름의 변수 이름 문자열 리터럴을 혼합했습니다.`당신은 base64.b64decode ("이미지 0") '와 같은 루프를 호출

image_group = [ 
    "iVBORw0KGgoAAAANSUhEUgAAA...", 
    "iVBORw0KGgoAAAANSUhEUgAAA...", 
    "iVBORw0KGgoAAAANSUhEUgAAA..." 
] 
관련 문제