cairo_backend.py: use BytesIO instead of StringIO

This fixes a crash in cairocffi on Python3, and should be compatible
with both python2 and python3. In python2, byte strings are just
strings. In python3, when getting binary data, the user probably wants
a byte string instead of a regular string.
refactor
Girts Folkmanis 2016-11-07 17:11:07 -08:00
rodzic 22e668c75f
commit 369ac7b2a3
1 zmienionych plików z 3 dodań i 6 usunięć

Wyświetl plik

@ -25,10 +25,7 @@ from .render import GerberContext, RenderSettings
from .theme import THEMES
from ..primitives import *
try:
from cStringIO import StringIO
except(ImportError):
from io import StringIO
from io import BytesIO
class GerberCairoContext(GerberContext):
@ -125,9 +122,9 @@ class GerberCairoContext(GerberContext):
self.surface.write_to_png(filename)
def dump_str(self):
""" Return a string containing the rendered image.
""" Return a byte-string containing the rendered image.
"""
fobj = StringIO()
fobj = BytesIO()
self.surface.write_to_png(fobj)
return fobj.getvalue()