Уведомления

Группа в Telegram: @pythonsu

#1 Май 9, 2011 15:51:32

VasCraft
От:
Зарегистрирован: 2010-08-23
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

wxPython: wxRichTextCtrl и изображения

С праздником всех и доброго времени суток. Те, кто сталкивался с wxRichText, должно быть заметили, что если производить сохранение форматированного файла как RTF(XML), то в теге изображений файла <image> имеются вот такие, например, строки:

      <image imagetype="15">
<data>89504E470D0A1A0A0000000D4948445200000020000000200806000000
737A7AF40000000473424954080808087C0864880000011949444154588
5ED974D12C32008859F991E2C47CFCDE822430753909F98B18BB26BD4
F73E9512D21AD6C6ABB28800BA3E6B40692F2DBA4A9AD2977D2F94817
101D85833F54423204300022863AC897B102A4065D79E8105B2590B6798
B30E919EB82AC0E8D8BD840967B405E09913D926DEB8750AE61568E22C
7435F1C647101F006BF7525C0A79BFA3D7E19E8014CFE44034894357F064
B486FB05A762CA7561F909FC01C275201399F91B702644E42F366D8E7831
853BA24308007A7DE0397B54340AC095ED5040A4319B579A97D3C8A9070
C6145C4BC7C05405FE325C82EC633E6FCAC370956C56CDDB7DA33B3259
B5D9A2D00B30E54BA1BD378D09CFE66577C8500167D17682016CC635F461
E4CC5F436C0CC58FE3A7E033CF37891C02ADD2E0000000049454E44AE426082
</data>
## извиняюсь за корявое форматирование, вообще, это одна строка
</image>
Так вот, насколько я понимаю, это вид графического файла формата PNG в виде hex-строки.

Если же данный файл сохранить в виде гипертекстового документа (HTML), то на месте изображений будут (!) изображения (!!), но самих изображений не будет. Точнее они будут внутри самого файла в ТАКОМ виде:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAARlJREFUWIXtl00SwyAIhZ+ZHixHz83oIkMHU5CfmLGLsmvU9z6VEtIa1sarsogAuj5rQGkvLbpKmtKXfS+UgXEB2Fgz9UQjIEMAAihjrIl7ECpAZdeegQWyWQtnmLMOkZ64KsDo2L2ECWe0BeCZE9km3rh1CuYVaOIsdDXxxkcQHwBr91JcCnm/o9fhnoAUz+RANIlDV/BktIb7BadiynVh+Qn8AcJ1IBOZ+RtwJkTkLzZtjngxhTuiQwgAen3gOXtUNArAle1QQKQxm1eal9PIqQcMYUXEvHwFQF/jJcguxjPm/Kw3CVbFbN232jOzJZtdmi0Asw5UuhvTeNCc/mZXfIUAFn0XaCAWzGNfRh5MxfQ2wMxY/jp+AzzzeJHAKt0uAAAAAElFTkSuQmCC" />
Самое интересное, что в последнем виде изображение представлено как внутреннее питоновское изображение.

Вопрос: есть ли возможность переконвертировать одно из этих изображений (hex-PNG или внутреннее питоновское) в нормальный PNG - файл? Возникшие мысли и идеи прошу изложить.



Офлайн

#2 Май 11, 2011 01:23:40

wonderfulll
От:
Зарегистрирован: 2009-01-30
Сообщения: 72
Репутация: +  0  -
Профиль   Отправить e-mail  

wxPython: wxRichTextCtrl и изображения

import Image
import base64

from StringIO import StringIO


image_src1 = """89504E470D0A1A0A0000000D4948445200000020000000200806000000737A7AF40000000473424954080808087C08648800000119494441545885ED974D12C32008859F991E2C47CFCDE822430753909F98B18BB26BD4F73E9512D21AD6C6ABB28800BA3E6B40692F2DBA4A9AD2977D2F94817101D85833F54423204300022863AC897B102A4065D79E8105B2590B6798B30E919EB82AC0E8D8BD840967B405E09913D926DEB8750AE61568E22C7435F1C647101F006BF7525C0A79BFA3D7E19E8014CFE44034894357F064B486FB05A762CA7561F909FC01C275201399F91B702644E42F366D8E7831853BA24308007A7DE0397B54340AC095ED5040A4319B579A97D3C8A9070C6145C4BC7C05405FE325C82EC633E6FCAC370956C56CDDB7DA33B3259B5D9A2D00B30E54BA1BD378D09CFE66577C8500167D17682016CC635F461E4CC5F436C0CC58FE3A7E033CF37891C02ADD2E0000000049454E44AE426082"""

image_src2 = """ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAARlJREFUWIXtl00SwyAIhZ+ZHixHz83oIkMHU5CfmLGLsmvU9z6VEtIa1sarsogAuj5rQGkvLbpKmtKXfS+UgXEB2Fgz9UQjIEMAAihjrIl7ECpAZdeegQWyWQtnmLMOkZ64KsDo2L2ECWe0BeCZE9km3rh1CuYVaOIsdDXxxkcQHwBr91JcCnm/o9fhnoAUz+RANIlDV/BktIb7BadiynVh+Qn8AcJ1IBOZ+RtwJkTkLzZtjngxhTuiQwgAen3gOXtUNArAle1QQKQxm1eal9PIqQcMYUXEvHwFQF/jJcguxjPm/Kw3CVbFbN232jOzJZtdmi0Asw5UuhvTeNCc/mZXfIUAFn0XaCAWzGNfRh5MxfQ2wMxY/jp+AzzzeJHAKt0uAAAAAElFTkSuQmCC """

im = Image.open(StringIO(image_src1.decode("hex")))
im.save("image1.png", "PNG")

im = Image.open(StringIO(base64.b64decode(image_src2)))
im.save("image2.png", "PNG")



Отредактировано (Май 11, 2011 01:25:33)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version