Merge pull request #1021 from wiredfool/save-docs

Docs for Image.save [ci skip]
This commit is contained in:
Hugo 2014-11-20 08:03:15 +02:00
commit 0accf25947
5 changed files with 79 additions and 11 deletions

View File

@ -1627,15 +1627,16 @@ class Image:
Keyword options can be used to provide additional instructions Keyword options can be used to provide additional instructions
to the writer. If a writer doesn't recognise an option, it is to the writer. If a writer doesn't recognise an option, it is
silently ignored. The available options are described later in silently ignored. The available options are described in the
this handbook. :doc:`image format documentation
<../handbook/image-file-formats>` for each writer.
You can use a file object instead of a filename. In this case, You can use a file object instead of a filename. In this case,
you must always specify the format. The file object must you must always specify the format. The file object must
implement the **seek**, **tell**, and **write** implement the ``seek``, ``tell``, and ``write``
methods, and be opened in binary mode. methods, and be opened in binary mode.
:param file: File name or file object. :param fp: File name or file object.
:param format: Optional format override. If omitted, the :param format: Optional format override. If omitted, the
format to use is determined from the filename extension. format to use is determined from the filename extension.
If a file object was used instead of a filename, this If a file object was used instead of a filename, this

View File

@ -149,31 +149,56 @@ class ChunkStream:
return cids return cids
# --------------------------------------------------------------------
# Subclass of string to allow iTXt chunks to look like strings while
# keeping their extra information
class iTXt(str): class iTXt(str):
"""
Subclass of string to allow iTXt chunks to look like strings while
keeping their extra information
"""
@staticmethod @staticmethod
def __new__(cls, text, lang, tkey): def __new__(cls, text, lang, tkey):
"""
:param value: value for this key
:param lang: language code
:param tkey: UTF-8 version of the key name
"""
self = str.__new__(cls, text) self = str.__new__(cls, text)
self.lang = lang self.lang = lang
self.tkey = tkey self.tkey = tkey
return self return self
# --------------------------------------------------------------------
# PNG chunk container (for use with save(pnginfo=))
class PngInfo: class PngInfo:
"""
PNG chunk container (for use with save(pnginfo=))
"""
def __init__(self): def __init__(self):
self.chunks = [] self.chunks = []
def add(self, cid, data): def add(self, cid, data):
"""Appends an arbitrary chunk. Use with caution.
:param cid: a byte string, 4 bytes long.
:param data: a byte string of the encoded data
"""
self.chunks.append((cid, data)) self.chunks.append((cid, data))
def add_itxt(self, key, value, lang="", tkey="", zip=False): def add_itxt(self, key, value, lang="", tkey="", zip=False):
"""Appends an iTXt chunk.
:param key: latin-1 encodable text key name
:param value: value for this key
:param lang: language code
:param tkey: UTF-8 version of the key name
:param zip: compression flag
"""
if not isinstance(key, bytes): if not isinstance(key, bytes):
key = key.encode("latin-1", "strict") key = key.encode("latin-1", "strict")
if not isinstance(value, bytes): if not isinstance(value, bytes):
@ -191,6 +216,14 @@ class PngInfo:
value) value)
def add_text(self, key, value, zip=0): def add_text(self, key, value, zip=0):
"""Appends a text chunk.
:param key: latin-1 encodable text key name
:param value: value for this key, text or an
:py:class:`PIL.PngImagePlugin.iTXt` instance
:param zip: compression flag
"""
if isinstance(value, iTXt): if isinstance(value, iTXt):
return self.add_itxt(key, value, value.lang, value.tkey, bool(zip)) return self.add_itxt(key, value, value.lang, value.tkey, bool(zip))

View File

@ -113,6 +113,29 @@ can be found here.
:undoc-members: :undoc-members:
:show-inheritance: :show-inheritance:
:class:`PngImagePlugin.iTXt` Class
----------------------------------
.. autoclass:: PIL.PngImagePlugin.iTXt
:members:
:undoc-members:
:show-inheritance:
.. method:: __new__(cls, text, lang, tkey)
:param value: value for this key
:param lang: language code
:param tkey: UTF-8 version of the key name
:class:`PngImagePlugin.PngInfo` Class
-------------------------------------
.. autoclass:: PIL.PngImagePlugin.PngInfo
:members:
:undoc-members:
:show-inheritance:
:mod:`TarIO` Module :mod:`TarIO` Module
------------------- -------------------

View File

@ -332,6 +332,9 @@ The :py:meth:`~PIL.Image.Image.open` method sets the following
Transparency color index. This key is omitted if the image is not a Transparency color index. This key is omitted if the image is not a
transparent palette image. transparent palette image.
``Open`` also sets ``Image.text`` to a list of the values of the
``tEXt``, ``zTXt``, and ``iTXt`` chunks of the PNG image.
The :py:meth:`~PIL.Image.Image.save` method supports the following options: The :py:meth:`~PIL.Image.Image.save` method supports the following options:
**optimize** **optimize**
@ -343,6 +346,12 @@ The :py:meth:`~PIL.Image.Image.save` method supports the following options:
For ``P``, ``L``, and ``RGB`` images, this option controls what For ``P``, ``L``, and ``RGB`` images, this option controls what
color image to mark as transparent. color image to mark as transparent.
**dpi**
A tuple of two numbers corresponding to the desired dpi in each direction.
**pnginfo**
A :py:class:`PIL.PngImagePlugin.PngInfo` instance containing text tags.
**bits (experimental)** **bits (experimental)**
For ``P`` images, this option controls how many bits to store. If omitted, For ``P`` images, this option controls how many bits to store. If omitted,
the PNG writer uses 8 bits (256 colors). the PNG writer uses 8 bits (256 colors).

View File

@ -193,4 +193,6 @@ Instances of the :py:class:`Image` class have the following attributes:
operation affects the dictionary. If you need the information later on, operation affects the dictionary. If you need the information later on,
keep a reference to the info dictionary returned from the open method. keep a reference to the info dictionary returned from the open method.
Unless noted elsewhere, this dictionary does not affect saving files.
:type: :py:class:`dict` :type: :py:class:`dict`