py3k: Convert StringIO.StringIO to io.BytesIO

io.BytesIO is already in 2.6. Some of the more obvious bytes literals are
marked in this commit.
This commit is contained in:
Brian Crowell 2012-10-16 22:01:19 -05:00 committed by Brian Crowell
parent dda0e9a3ed
commit 260c1fad14
8 changed files with 72 additions and 72 deletions

View File

@ -12,7 +12,7 @@
# See the README file for information on usage and redistribution. # See the README file for information on usage and redistribution.
# #
from StringIO import StringIO from io import BytesIO
## ##
# The <b>ImageFileIO</b> module can be used to read an image from a # The <b>ImageFileIO</b> module can be used to read an image from a
@ -23,7 +23,7 @@ from StringIO import StringIO
# #
# @see ImageFile#Parser # @see ImageFile#Parser
class ImageFileIO(StringIO): class ImageFileIO(BytesIO):
## ##
# Adds buffering to a stream file object, in order to # Adds buffering to a stream file object, in order to
@ -36,4 +36,4 @@ class ImageFileIO(StringIO):
def __init__(self, fp): def __init__(self, fp):
data = fp.read() data = fp.read()
StringIO.__init__(self, data) BytesIO.__init__(self, data)

View File

@ -255,12 +255,12 @@ def load_path(filename):
def load_default(): def load_default():
"Load a default font." "Load a default font."
from StringIO import StringIO from io import BytesIO
import base64 import base64
f = ImageFont() f = ImageFont()
f._load_pilfont_data( f._load_pilfont_data(
# courB08 # courB08
StringIO(base64.decodestring(''' BytesIO(base64.decodestring(b'''
UElMZm9udAo7Ozs7OzsxMDsKREFUQQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA UElMZm9udAo7Ozs7OzsxMDsKREFUQQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
@ -352,7 +352,7 @@ AJsAEQAGAAAAAP/6AAX//wCbAAoAoAAPAAYAAAAA//oABQABAKAACgClABEABgAA////+AAGAAAA
pQAKAKwAEgAGAAD////4AAYAAACsAAoAswASAAYAAP////gABgAAALMACgC6ABIABgAA////+QAG pQAKAKwAEgAGAAD////4AAYAAACsAAoAswASAAYAAP////gABgAAALMACgC6ABIABgAA////+QAG
AAAAugAKAMEAEQAGAAD////4AAYAAgDBAAoAyAAUAAYAAP////kABQACAMgACgDOABMABgAA//// AAAAugAKAMEAEQAGAAD////4AAYAAgDBAAoAyAAUAAYAAP////kABQACAMgACgDOABMABgAA////
+QAGAAIAzgAKANUAEw== +QAGAAIAzgAKANUAEw==
''')), Image.open(StringIO(base64.decodestring(''' ''')), Image.open(BytesIO(base64.decodestring(b'''
iVBORw0KGgoAAAANSUhEUgAAAx4AAAAUAQAAAAArMtZoAAAEwElEQVR4nABlAJr/AHVE4czCI/4u iVBORw0KGgoAAAANSUhEUgAAAx4AAAAUAQAAAAArMtZoAAAEwElEQVR4nABlAJr/AHVE4czCI/4u
Mc4b7vuds/xzjz5/3/7u/n9vMe7vnfH/9++vPn/xyf5zhxzjt8GHw8+2d83u8x27199/nxuQ6Od9 Mc4b7vuds/xzjz5/3/7u/n9vMe7vnfH/9++vPn/xyf5zhxzjt8GHw8+2d83u8x27199/nxuQ6Od9
M43/5z2I+9n9ZtmDBwMQECDRQw/eQIQohJXxpBCNVE6QCCAAAAD//wBlAJr/AgALyj1t/wINwq0g M43/5z2I+9n9ZtmDBwMQECDRQw/eQIQohJXxpBCNVE6QCCAAAAD//wBlAJr/AgALyj1t/wINwq0g
@ -385,8 +385,8 @@ if __name__ == "__main__":
font = "../Images/courB08" font = "../Images/courB08"
print(" f._load_pilfont_data(") print(" f._load_pilfont_data(")
print(" # %s" % os.path.basename(font)) print(" # %s" % os.path.basename(font))
print(" StringIO(base64.decodestring('''") print(" BytesIO(base64.decodestring(b'''")
base64.encode(open(font + ".pil", "rb"), sys.stdout) base64.encode(open(font + ".pil", "rb"), sys.stdout)
print("''')), Image.open(StringIO(base64.decodestring('''") print("''')), Image.open(BytesIO(base64.decodestring(b'''")
base64.encode(open(font + ".pbm", "rb"), sys.stdout) base64.encode(open(font + ".pbm", "rb"), sys.stdout)
print("'''))))") print("'''))))")

View File

@ -67,6 +67,6 @@ def grabclipboard():
data = Image.core.grabclipboard(debug) data = Image.core.grabclipboard(debug)
if Image.isStringType(data): if Image.isStringType(data):
from . import BmpImagePlugin from . import BmpImagePlugin
import StringIO import io
return BmpImagePlugin.DibImageFile(StringIO.StringIO(data)) return BmpImagePlugin.DibImageFile(io.BytesIO(data))
return data return data

View File

@ -92,8 +92,8 @@ class PhotoImage:
image = Image.open(kw["file"]) image = Image.open(kw["file"])
del kw["file"] del kw["file"]
elif "data" in kw: elif "data" in kw:
from StringIO import StringIO from io import BytesIO
image = Image.open(StringIO(kw["data"])) image = Image.open(BytesIO(kw["data"]))
del kw["data"] del kw["data"]
if hasattr(image, "mode") and hasattr(image, "size"): if hasattr(image, "mode") and hasattr(image, "size"):
@ -224,8 +224,8 @@ class BitmapImage:
image = Image.open(kw["file"]) image = Image.open(kw["file"])
del kw["file"] del kw["file"]
elif "data" in kw: elif "data" in kw:
from StringIO import StringIO from io import BytesIO
image = Image.open(StringIO(kw["data"])) image = Image.open(BytesIO(kw["data"]))
del kw["data"] del kw["data"]
self.__mode = image.mode self.__mode = image.mode

View File

@ -220,7 +220,7 @@ Image.register_extension("IPTC", ".iim")
def getiptcinfo(im): def getiptcinfo(im):
from . import TiffImagePlugin, JpegImagePlugin from . import TiffImagePlugin, JpegImagePlugin
import StringIO import io
data = None data = None
@ -279,7 +279,7 @@ def getiptcinfo(im):
# parse the IPTC information chunk # parse the IPTC information chunk
im.info = {} im.info = {}
im.fp = StringIO.StringIO(data) im.fp = io.BytesIO(data)
try: try:
im._open() im._open()

View File

@ -362,7 +362,7 @@ class JpegImageFile(ImageFile.ImageFile):
# and is likely to be replaced with something better in a future # and is likely to be replaced with something better in a future
# version. # version.
from . import TiffImagePlugin from . import TiffImagePlugin
import StringIO import io
def fixup(value): def fixup(value):
if len(value) == 1: if len(value) == 1:
return value[0] return value[0]
@ -373,7 +373,7 @@ class JpegImageFile(ImageFile.ImageFile):
data = self.info["exif"] data = self.info["exif"]
except KeyError: except KeyError:
return None return None
file = StringIO.StringIO(data[6:]) file = io.BytesIO(data[6:])
head = file.read(8) head = file.read(8)
exif = {} exif = {}
# process dictionary # process dictionary

View File

@ -38,7 +38,7 @@
from __future__ import print_function from __future__ import print_function
import StringIO import io
import sys import sys
def i16(c, o = 0): def i16(c, o = 0):
@ -81,7 +81,7 @@ WORD_CLSID = "00020900-0000-0000-C000-000000000046"
# #
# -------------------------------------------------------------------- # --------------------------------------------------------------------
class _OleStream(StringIO.StringIO): class _OleStream(io.BytesIO):
"""OLE2 Stream """OLE2 Stream
@ -107,11 +107,11 @@ class _OleStream(StringIO.StringIO):
data.append(fp.read(sectorsize)) data.append(fp.read(sectorsize))
sect = fat[sect] sect = fat[sect]
data = "".join(data) data = b"".join(data)
# print len(data), size # print len(data), size
StringIO.StringIO.__init__(self, data[:size]) io.BytesIO.__init__(self, data[:size])
# #
# -------------------------------------------------------------------- # --------------------------------------------------------------------

View File

@ -23,7 +23,7 @@
__version__ = "0.4" __version__ = "0.4"
from . import Image, ImageFile from . import Image, ImageFile
import StringIO import io
# #
@ -37,16 +37,16 @@ import StringIO
# 5. page contents # 5. page contents
def _obj(fp, obj, **dict): def _obj(fp, obj, **dict):
fp.write("%d 0 obj\n" % obj) fp.write(b"%d 0 obj\n" % obj)
if dict: if dict:
fp.write("<<\n") fp.write(b"<<\n")
for k, v in dict.items(): for k, v in dict.items():
if v is not None: if v is not None:
fp.write("/%s %s\n" % (k, v)) fp.write(b"/%s %s\n" % (k, v))
fp.write(">>\n") fp.write(b">>\n")
def _endobj(fp): def _endobj(fp):
fp.write("endobj\n") fp.write(b"endobj\n")
## ##
# (Internal) Image save plugin for the PDF format. # (Internal) Image save plugin for the PDF format.
@ -60,8 +60,8 @@ def _save(im, fp, filename):
xref = [0]*(5+1) # placeholders xref = [0]*(5+1) # placeholders
fp.write("%PDF-1.2\n") fp.write(b"%PDF-1.2\n")
fp.write("% created by PIL PDF driver " + __version__ + "\n") fp.write(b"% created by PIL PDF driver " + __version__ + "\n")
# #
# Get image characteristics # Get image characteristics
@ -76,34 +76,34 @@ def _save(im, fp, filename):
params = None params = None
if im.mode == "1": if im.mode == "1":
filter = "/ASCIIHexDecode" filter = b"/ASCIIHexDecode"
colorspace = "/DeviceGray" colorspace = b"/DeviceGray"
procset = "/ImageB" # grayscale procset = b"/ImageB" # grayscale
bits = 1 bits = 1
elif im.mode == "L": elif im.mode == "L":
filter = "/DCTDecode" filter = b"/DCTDecode"
# params = "<< /Predictor 15 /Columns %d >>" % (width-2) # params = "<< /Predictor 15 /Columns %d >>" % (width-2)
colorspace = "/DeviceGray" colorspace = b"/DeviceGray"
procset = "/ImageB" # grayscale procset = b"/ImageB" # grayscale
elif im.mode == "P": elif im.mode == "P":
filter = "/ASCIIHexDecode" filter = b"/ASCIIHexDecode"
colorspace = "[ /Indexed /DeviceRGB 255 <" colorspace = b"[ /Indexed /DeviceRGB 255 <"
palette = im.im.getpalette("RGB") palette = im.im.getpalette("RGB")
for i in range(256): for i in range(256):
r = ord(palette[i*3]) r = ord(palette[i*3])
g = ord(palette[i*3+1]) g = ord(palette[i*3+1])
b = ord(palette[i*3+2]) b = ord(palette[i*3+2])
colorspace = colorspace + "%02x%02x%02x " % (r, g, b) colorspace = colorspace + b"%02x%02x%02x " % (r, g, b)
colorspace = colorspace + "> ]" colorspace = colorspace + b"> ]"
procset = "/ImageI" # indexed color procset = b"/ImageI" # indexed color
elif im.mode == "RGB": elif im.mode == "RGB":
filter = "/DCTDecode" filter = b"/DCTDecode"
colorspace = "/DeviceRGB" colorspace = b"/DeviceRGB"
procset = "/ImageC" # color images procset = b"/ImageC" # color images
elif im.mode == "CMYK": elif im.mode == "CMYK":
filter = "/DCTDecode" filter = b"/DCTDecode"
colorspace = "/DeviceCMYK" colorspace = b"/DeviceCMYK"
procset = "/ImageC" # color images procset = b"/ImageC" # color images
else: else:
raise ValueError("cannot save mode %s" % im.mode) raise ValueError("cannot save mode %s" % im.mode)
@ -111,25 +111,25 @@ def _save(im, fp, filename):
# catalogue # catalogue
xref[1] = fp.tell() xref[1] = fp.tell()
_obj(fp, 1, Type = "/Catalog", _obj(fp, 1, Type = b"/Catalog",
Pages = "2 0 R") Pages = b"2 0 R")
_endobj(fp) _endobj(fp)
# #
# pages # pages
xref[2] = fp.tell() xref[2] = fp.tell()
_obj(fp, 2, Type = "/Pages", _obj(fp, 2, Type = b"/Pages",
Count = 1, Count = 1,
Kids = "[4 0 R]") Kids = b"[4 0 R]")
_endobj(fp) _endobj(fp)
# #
# image # image
op = StringIO.StringIO() op = io.BytesIO()
if filter == "/ASCIIHexDecode": if filter == b"/ASCIIHexDecode":
if bits == 1: if bits == 1:
# FIXME: the hex encoder doesn't support packed 1-bit # FIXME: the hex encoder doesn't support packed 1-bit
# images; do things the hard way... # images; do things the hard way...
@ -137,18 +137,18 @@ def _save(im, fp, filename):
im = Image.new("L", (len(data), 1), None) im = Image.new("L", (len(data), 1), None)
im.putdata(data) im.putdata(data)
ImageFile._save(im, op, [("hex", (0,0)+im.size, 0, im.mode)]) ImageFile._save(im, op, [("hex", (0,0)+im.size, 0, im.mode)])
elif filter == "/DCTDecode": elif filter == b"/DCTDecode":
ImageFile._save(im, op, [("jpeg", (0,0)+im.size, 0, im.mode)]) ImageFile._save(im, op, [("jpeg", (0,0)+im.size, 0, im.mode)])
elif filter == "/FlateDecode": elif filter == b"/FlateDecode":
ImageFile._save(im, op, [("zip", (0,0)+im.size, 0, im.mode)]) ImageFile._save(im, op, [("zip", (0,0)+im.size, 0, im.mode)])
elif filter == "/RunLengthDecode": elif filter == b"/RunLengthDecode":
ImageFile._save(im, op, [("packbits", (0,0)+im.size, 0, im.mode)]) ImageFile._save(im, op, [("packbits", (0,0)+im.size, 0, im.mode)])
else: else:
raise ValueError("unsupported PDF filter (%s)" % filter) raise ValueError("unsupported PDF filter (%s)" % filter)
xref[3] = fp.tell() xref[3] = fp.tell()
_obj(fp, 3, Type = "/XObject", _obj(fp, 3, Type = b"/XObject",
Subtype = "/Image", Subtype = b"/Image",
Width = width, # * 72.0 / resolution, Width = width, # * 72.0 / resolution,
Height = height, # * 72.0 / resolution, Height = height, # * 72.0 / resolution,
Length = len(op.getvalue()), Length = len(op.getvalue()),
@ -157,9 +157,9 @@ def _save(im, fp, filename):
DecodeParams = params, DecodeParams = params,
ColorSpace = colorspace) ColorSpace = colorspace)
fp.write("stream\n") fp.write(b"stream\n")
fp.write(op.getvalue()) fp.write(op.getvalue())
fp.write("\nendstream\n") fp.write(b"\nendstream\n")
_endobj(fp) _endobj(fp)
@ -168,37 +168,37 @@ def _save(im, fp, filename):
xref[4] = fp.tell() xref[4] = fp.tell()
_obj(fp, 4) _obj(fp, 4)
fp.write("<<\n/Type /Page\n/Parent 2 0 R\n"\ fp.write(b"<<\n/Type /Page\n/Parent 2 0 R\n"\
"/Resources <<\n/ProcSet [ /PDF %s ]\n"\ b"/Resources <<\n/ProcSet [ /PDF %s ]\n"\
"/XObject << /image 3 0 R >>\n>>\n"\ b"/XObject << /image 3 0 R >>\n>>\n"\
"/MediaBox [ 0 0 %d %d ]\n/Contents 5 0 R\n>>\n" %\ b"/MediaBox [ 0 0 %d %d ]\n/Contents 5 0 R\n>>\n" %\
(procset, int(width * 72.0 /resolution) , int(height * 72.0 / resolution))) (procset, int(width * 72.0 /resolution) , int(height * 72.0 / resolution)))
_endobj(fp) _endobj(fp)
# #
# page contents # page contents
op = StringIO.StringIO() op = io.BytesIO()
op.write("q %d 0 0 %d 0 0 cm /image Do Q\n" % (int(width * 72.0 / resolution), int(height * 72.0 / resolution))) op.write(b"q %d 0 0 %d 0 0 cm /image Do Q\n" % (int(width * 72.0 / resolution), int(height * 72.0 / resolution)))
xref[5] = fp.tell() xref[5] = fp.tell()
_obj(fp, 5, Length = len(op.getvalue())) _obj(fp, 5, Length = len(op.getvalue()))
fp.write("stream\n") fp.write(b"stream\n")
fp.write(op.getvalue()) fp.write(op.getvalue())
fp.write("\nendstream\n") fp.write(b"\nendstream\n")
_endobj(fp) _endobj(fp)
# #
# trailer # trailer
startxref = fp.tell() startxref = fp.tell()
fp.write("xref\n0 %d\n0000000000 65535 f \n" % len(xref)) fp.write(b"xref\n0 %d\n0000000000 65535 f \n" % len(xref))
for x in xref[1:]: for x in xref[1:]:
fp.write("%010d 00000 n \n" % x) fp.write(b"%010d 00000 n \n" % x)
fp.write("trailer\n<<\n/Size %d\n/Root 1 0 R\n>>\n" % len(xref)) fp.write(b"trailer\n<<\n/Size %d\n/Root 1 0 R\n>>\n" % len(xref))
fp.write("startxref\n%d\n%%%%EOF\n" % startxref) fp.write(b"startxref\n%d\n%%%%EOF\n" % startxref)
fp.flush() fp.flush()
# #