Ошибка при отображении изображений в кодировке base64 на html-странице - PullRequest
0 голосов
/ 08 октября 2018

У меня есть список, состоящий из изображений в кодировке base64:

Когда я пытался отобразить изображения из списка на странице HTML, он отображает только первое изображение непрерывно.Когда я печатал каждый элемент в списке, я увидел, что первое имя кодировки дополняется вторым именем кодировки.

Например:

Если имя первого кодированного изображения - «first", тогда имя второй кодировки будет" firstsecond ", а третье будет" firstsecondthird ", как если бы оно повторялось до последнего изображения в списке.

Мой код кодирования:

img = Image.open(os.path.join(upload,filename))       
    cropped = img.crop( ( left, top, right, bottom ) )        
    cropped.save(buffer, "PNG")
    img_str = base64.b64encode(buffer.getvalue())
    crop_pic.append(img_str) 

Мой HTML-код:

<table>
                {% for i in crop_pic: %}                                            
                <tr>
                    <td>
                    <img src="data:image/png;base64,{{ i }}">                                                              
                    </td>
                </tr>
                {% endfor %}
 </table>

crop_pic - список, содержащий изображения

1 Ответ

0 голосов
/ 09 октября 2018

Проблема в том, что имя первого изображения дополняется вторым, пока цикл продолжается, и чтобы избежать этого, я удалил переменные img_str и буфер после добавления каждого изображения в список.Таким образом, код будет выглядеть следующим образом:

for top, right, bottom, left in boxes: 
    buffer = StringIO.StringIO()
    img = Image.open("path/to/file")       
    cropped = img.crop( ( left, top, right, bottom ) )                
    cropped.save(buffer, "PNG")
    img_str = base64.b64encode(buffer.getvalue())
    crop_pic.append(img_str) 
    del img_str, buffer 

, поэтому после выполнения этого кода у меня не было того же изображения при отображении на html-странице.

...