mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-08-24 06:04:46 +03:00
Accept io.StringIO as a path for Image.open
This commit is contained in:
parent
33cfac7715
commit
e8c56f5e1b
|
@ -1,3 +1,4 @@
|
||||||
|
import io
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
|
@ -91,6 +92,11 @@ class TestImage(PillowTestCase):
|
||||||
def test_bad_mode(self):
|
def test_bad_mode(self):
|
||||||
self.assertRaises(ValueError, Image.open, "filename", "bad mode")
|
self.assertRaises(ValueError, Image.open, "filename", "bad mode")
|
||||||
|
|
||||||
|
def test_stringio(self):
|
||||||
|
with Image.open(io.StringIO("Tests/images/hopper.jpg")) as im:
|
||||||
|
self.assertEqual(im.mode, "RGB")
|
||||||
|
self.assertEqual(im.size, (128, 128))
|
||||||
|
|
||||||
def test_pathlib(self):
|
def test_pathlib(self):
|
||||||
from PIL.Image import Path
|
from PIL.Image import Path
|
||||||
|
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
File Handling in Pillow
|
File Handling in Pillow
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
When opening a file as an image, Pillow requires a filename, ``pathlib.Path``
|
When opening a file as an image, Pillow requires a filename, ``io.StringIO``
|
||||||
object, or a file-like object. Pillow uses the filename or ``Path`` to open a
|
object, ``pathlib.Path`` object, or a file-like object. Pillow uses the
|
||||||
file, so for the rest of this article, they will all be treated as a file-like
|
filename, ``StringIO`` or ``Path`` to open a file, so for the rest of this
|
||||||
object.
|
article, they will all be treated as a file-like object.
|
||||||
|
|
||||||
The following are all equivalent::
|
The following are all equivalent::
|
||||||
|
|
||||||
|
@ -17,6 +17,9 @@ The following are all equivalent::
|
||||||
with Image.open('test.jpg') as im:
|
with Image.open('test.jpg') as im:
|
||||||
...
|
...
|
||||||
|
|
||||||
|
with Image.open(io.StringIO('test.jpg')) as im2:
|
||||||
|
...
|
||||||
|
|
||||||
with Image.open(pathlib.Path('test.jpg')) as im2:
|
with Image.open(pathlib.Path('test.jpg')) as im2:
|
||||||
...
|
...
|
||||||
|
|
||||||
|
|
|
@ -2674,8 +2674,8 @@ def open(fp, mode="r"):
|
||||||
:py:meth:`~PIL.Image.Image.load` method). See
|
:py:meth:`~PIL.Image.Image.load` method). See
|
||||||
:py:func:`~PIL.Image.new`. See :ref:`file-handling`.
|
:py:func:`~PIL.Image.new`. See :ref:`file-handling`.
|
||||||
|
|
||||||
:param fp: A filename (string), pathlib.Path object or a file object.
|
:param fp: A filename (string), io.StringIO object, pathlib.Path object
|
||||||
The file object must implement :py:meth:`~file.read`,
|
or a file object. The file object must implement :py:meth:`~file.read`,
|
||||||
:py:meth:`~file.seek`, and :py:meth:`~file.tell` methods,
|
:py:meth:`~file.seek`, and :py:meth:`~file.tell` methods,
|
||||||
and be opened in binary mode.
|
and be opened in binary mode.
|
||||||
:param mode: The mode. If given, this argument must be "r".
|
:param mode: The mode. If given, this argument must be "r".
|
||||||
|
@ -2691,6 +2691,8 @@ def open(fp, mode="r"):
|
||||||
filename = ""
|
filename = ""
|
||||||
if isinstance(fp, Path):
|
if isinstance(fp, Path):
|
||||||
filename = str(fp.resolve())
|
filename = str(fp.resolve())
|
||||||
|
elif isinstance(fp, io.StringIO):
|
||||||
|
filename = fp.getvalue()
|
||||||
elif isPath(fp):
|
elif isPath(fp):
|
||||||
filename = fp
|
filename = fp
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user