mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-13 02:36:17 +03:00
Merge from master
This commit is contained in:
commit
a414986ee9
23
.travis.yml
23
.travis.yml
|
@ -3,7 +3,7 @@ language: python
|
||||||
notifications:
|
notifications:
|
||||||
irc: "chat.freenode.net#pil"
|
irc: "chat.freenode.net#pil"
|
||||||
|
|
||||||
env: MAX_CONCURRENCY=4 NOSE_PROCESSES=4 NOSE_PROCESS_TIMEOUT=30
|
env: MAX_CONCURRENCY=4
|
||||||
|
|
||||||
python:
|
python:
|
||||||
- "pypy"
|
- "pypy"
|
||||||
|
@ -14,9 +14,9 @@ python:
|
||||||
- 3.4
|
- 3.4
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- "sudo apt-get -qq install libfreetype6-dev liblcms2-dev python-qt4 ghostscript libffi-dev cmake imagemagick"
|
- "sudo apt-get -qq install libfreetype6-dev liblcms2-dev python-qt4 ghostscript libffi-dev libjpeg-turbo-progs cmake imagemagick"
|
||||||
- "pip install cffi"
|
- "pip install cffi"
|
||||||
- "pip install coveralls nose pyroma nose-cov"
|
- "pip install coveralls nose pyroma"
|
||||||
- if [ "$TRAVIS_PYTHON_VERSION" == "2.6" ]; then pip install unittest2; fi
|
- if [ "$TRAVIS_PYTHON_VERSION" == "2.6" ]; then pip install unittest2; fi
|
||||||
|
|
||||||
# webp
|
# webp
|
||||||
|
@ -35,17 +35,22 @@ script:
|
||||||
- if [ "$TRAVIS_PYTHON_VERSION" == "pypy" ]; then time nosetests Tests/test_*.py; fi
|
- if [ "$TRAVIS_PYTHON_VERSION" == "pypy" ]; then time nosetests Tests/test_*.py; fi
|
||||||
|
|
||||||
# Cover the others
|
# Cover the others
|
||||||
- if [ "$TRAVIS_PYTHON_VERSION" != "pypy" ]; then coverage run --parallel-mode --include=PIL/* selftest.py; fi
|
- if [ "$TRAVIS_PYTHON_VERSION" != "pypy" ]; then time coverage run --append --include=PIL/* selftest.py; fi
|
||||||
# write html report, then ignore. Coverage needs to be combined first
|
- if [ "$TRAVIS_PYTHON_VERSION" != "pypy" ]; then time coverage run --append --include=PIL/* -m nose Tests/test_*.py; fi
|
||||||
- if [ "$TRAVIS_PYTHON_VERSION" != "pypy" ]; then nosetests --with-cov --cov='PIL/' --cov-report=html Tests/test_*.py; fi
|
|
||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
- ls -l .coverage*
|
|
||||||
- coverage combine
|
|
||||||
- coverage report
|
- coverage report
|
||||||
- coveralls
|
# No need to send empty coverage to Coveralls for PyPy
|
||||||
|
- if [ "$TRAVIS_PYTHON_VERSION" != "pypy" ]; then coveralls; fi
|
||||||
|
|
||||||
- pip install pep8 pyflakes
|
- pip install pep8 pyflakes
|
||||||
- pep8 --statistics --count PIL/*.py
|
- pep8 --statistics --count PIL/*.py
|
||||||
- pep8 --statistics --count Tests/*.py
|
- pep8 --statistics --count Tests/*.py
|
||||||
- pyflakes PIL/*.py | tee >(wc -l)
|
- pyflakes PIL/*.py | tee >(wc -l)
|
||||||
- pyflakes Tests/*.py | tee >(wc -l)
|
- pyflakes Tests/*.py | tee >(wc -l)
|
||||||
|
|
||||||
|
|
||||||
|
# Coverage and quality reports on just the latest diff.
|
||||||
|
# (Installation is very slow on Py3, so just do it for Py2.)
|
||||||
|
- if [ ${TRAVIS_PYTHON_VERSION:0:1} == "2" ]; then Scripts/diffcover-install.sh; fi
|
||||||
|
- if [ ${TRAVIS_PYTHON_VERSION:0:1} == "2" ]; then Scripts/diffcover-run.sh; fi
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
Changelog (Pillow)
|
Changelog (Pillow)
|
||||||
==================
|
==================
|
||||||
|
|
||||||
2.5.0 (unreleased)
|
2.5.0 (2014-07-01)
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
- Imagedraw rewrite
|
- Imagedraw rewrite
|
||||||
|
|
|
@ -172,18 +172,16 @@ class Jpeg2KImageFile(ImageFile.ImageFile):
|
||||||
fd = -1
|
fd = -1
|
||||||
length = -1
|
length = -1
|
||||||
|
|
||||||
if hasattr(self.fp, "fileno"):
|
|
||||||
try:
|
try:
|
||||||
fd = self.fp.fileno()
|
fd = self.fp.fileno()
|
||||||
length = os.fstat(fd).st_size
|
length = os.fstat(fd).st_size
|
||||||
except:
|
except:
|
||||||
fd = -1
|
fd = -1
|
||||||
elif hasattr(self.fp, "seek"):
|
|
||||||
try:
|
try:
|
||||||
pos = f.tell()
|
pos = self.fp.tell()
|
||||||
f.seek(0, 2)
|
self.fp.seek(0, 2)
|
||||||
length = f.tell()
|
length = self.fp.tell()
|
||||||
f.seek(pos, 0)
|
self.fp.seek(pos, 0)
|
||||||
except:
|
except:
|
||||||
length = -1
|
length = -1
|
||||||
|
|
||||||
|
|
7
Scripts/diffcover-install.sh
Executable file
7
Scripts/diffcover-install.sh
Executable file
|
@ -0,0 +1,7 @@
|
||||||
|
# Fetch the remote master branch before running diff-cover on Travis CI.
|
||||||
|
# https://github.com/edx/diff-cover#troubleshooting
|
||||||
|
git fetch origin master:refs/remotes/origin/master
|
||||||
|
|
||||||
|
# CFLAGS=-O0 means build with no optimisation.
|
||||||
|
# Makes build much quicker for lxml and other dependencies.
|
||||||
|
time CFLAGS=-O0 pip install --use-wheel diff_cover
|
4
Scripts/diffcover-run.sh
Executable file
4
Scripts/diffcover-run.sh
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
coverage xml
|
||||||
|
diff-cover coverage.xml
|
||||||
|
diff-quality --violation=pyflakes
|
||||||
|
diff-quality --violation=pep8
|
|
@ -39,6 +39,13 @@ class TestFileJpeg2k(PillowTestCase):
|
||||||
self.assertEqual(im.size, (640, 480))
|
self.assertEqual(im.size, (640, 480))
|
||||||
self.assertEqual(im.format, 'JPEG2000')
|
self.assertEqual(im.format, 'JPEG2000')
|
||||||
|
|
||||||
|
def test_bytesio(self):
|
||||||
|
with open('Tests/images/test-card-lossless.jp2', 'rb') as f:
|
||||||
|
data = BytesIO(f.read())
|
||||||
|
im = Image.open(data)
|
||||||
|
im.load()
|
||||||
|
self.assert_image_similar(im, test_card, 1.0e-3)
|
||||||
|
|
||||||
# These two test pre-written JPEG 2000 files that were not written with
|
# These two test pre-written JPEG 2000 files that were not written with
|
||||||
# PIL (they were made using Adobe Photoshop)
|
# PIL (they were made using Adobe Photoshop)
|
||||||
|
|
||||||
|
|
16
docs/_templates/sidebarhelp.html
vendored
16
docs/_templates/sidebarhelp.html
vendored
|
@ -1,18 +1,4 @@
|
||||||
<h3>Need help?</h3>
|
<h3>Need help?</h3>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
You can seek realtime assistance via IRC at
|
You can get help via IRC at <a href="irc://irc.freenode.net#pil">irc://irc.freenode.net#pil</a> or Stack Overflow <a href="http://stackoverflow.com/questions/tagged/pillow">here</a> and <a href="http://stackoverflow.com/questions/tagged/pil">here</a>. Please <a href="https://github.com/python-pillow/Pillow/issues/new">report issues on GitHub</a>.
|
||||||
<a href="irc://irc.freenode.net#pil">irc://irc.freenode.net#pil</a>. You can
|
|
||||||
also post to the
|
|
||||||
<a href="http://mail.python.org/mailman/listinfo/image-sig">
|
|
||||||
Image-SIG mailing list</a>. And, of course, there's
|
|
||||||
<a href="http://stackoverflow.com/questions/tagged/pillow">
|
|
||||||
Stack Overflow</a>.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
|
||||||
If you've discovered a bug, you can
|
|
||||||
<a href="https://github.com/python-pillow/Pillow/issues/new">open an issue
|
|
||||||
on Github</a>.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
|
@ -9,12 +9,10 @@ The fork authors' goal is to foster active development of PIL through:
|
||||||
- Continuous integration testing via `Travis CI`_
|
- Continuous integration testing via `Travis CI`_
|
||||||
- Publicized development activity on `GitHub`_
|
- Publicized development activity on `GitHub`_
|
||||||
- Regular releases to the `Python Package Index`_
|
- Regular releases to the `Python Package Index`_
|
||||||
- Solicitation for community contributions and involvement on `Image-SIG`_
|
|
||||||
|
|
||||||
.. _Travis CI: https://travis-ci.org/python-pillow/Pillow
|
.. _Travis CI: https://travis-ci.org/python-pillow/Pillow
|
||||||
.. _GitHub: https://github.com/python-pillow/Pillow
|
.. _GitHub: https://github.com/python-pillow/Pillow
|
||||||
.. _Python Package Index: https://pypi.python.org/pypi/Pillow
|
.. _Python Package Index: https://pypi.python.org/pypi/Pillow
|
||||||
.. _Image-SIG: http://mail.python.org/mailman/listinfo/image-sig
|
|
||||||
|
|
||||||
License
|
License
|
||||||
-------
|
-------
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
Pillow
|
Pillow
|
||||||
======
|
======
|
||||||
|
|
||||||
Pillow is the 'friendly' PIL fork by Alex Clark and Contributors. PIL is the
|
Pillow is the 'friendly' PIL fork by Alex Clark and Contributors. PIL is the Python Imaging Library by Fredrik Lundh and Contributors.
|
||||||
Python Imaging Library by Fredrik Lundh and Contributors.
|
|
||||||
|
|
||||||
.. image:: https://travis-ci.org/python-pillow/Pillow.svg?branch=master
|
.. image:: https://travis-ci.org/python-pillow/Pillow.svg?branch=master
|
||||||
:target: https://travis-ci.org/python-pillow/Pillow
|
:target: https://travis-ci.org/python-pillow/Pillow
|
||||||
|
@ -20,12 +19,7 @@ Python Imaging Library by Fredrik Lundh and Contributors.
|
||||||
:target: https://coveralls.io/r/python-pillow/Pillow?branch=master
|
:target: https://coveralls.io/r/python-pillow/Pillow?branch=master
|
||||||
:alt: Test coverage
|
:alt: Test coverage
|
||||||
|
|
||||||
To start using Pillow, please read the :doc:`installation
|
To install Pillow, please follow the :doc:`installation instructions <installation>`. To download source and/or contribute to development of Pillow please see: https://github.com/python-pillow/Pillow.
|
||||||
instructions <installation>`.
|
|
||||||
|
|
||||||
You can get the source and contribute at
|
|
||||||
https://github.com/python-pillow/Pillow. You can download archives
|
|
||||||
and old versions from `PyPI <https://pypi.python.org/pypi/Pillow>`_.
|
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
@ -37,30 +31,6 @@ and old versions from `PyPI <https://pypi.python.org/pypi/Pillow>`_.
|
||||||
handbook/appendices
|
handbook/appendices
|
||||||
original-readme
|
original-readme
|
||||||
|
|
||||||
Support Pillow!
|
|
||||||
===============
|
|
||||||
|
|
||||||
PIL needs you! Please help us maintain the Python Imaging Library here:
|
|
||||||
|
|
||||||
- `GitHub <https://github.com/python-pillow/Pillow>`_
|
|
||||||
- `Freenode <irc://irc.freenode.net#pil>`_
|
|
||||||
- `Image-SIG <http://mail.python.org/mailman/listinfo/image-sig>`_
|
|
||||||
|
|
||||||
Financial
|
|
||||||
---------
|
|
||||||
|
|
||||||
Pillow is a volunteer effort led by Alex Clark. If you can't help with
|
|
||||||
development please consider helping us financially. Your assistance would
|
|
||||||
be very much appreciated!
|
|
||||||
|
|
||||||
.. note:: Contributors please add your name and donation preference here.
|
|
||||||
|
|
||||||
======================================= =======================================
|
|
||||||
**Developer** **Preference**
|
|
||||||
======================================= =======================================
|
|
||||||
Alex Clark (fork author) http://gittip.com/aclark4life
|
|
||||||
======================================= =======================================
|
|
||||||
|
|
||||||
Indices and tables
|
Indices and tables
|
||||||
==================
|
==================
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,10 @@ run::
|
||||||
External libraries
|
External libraries
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
You *do not* need to install all of the external libraries to use Pillow's basic features.
|
||||||
|
|
||||||
Many of Pillow's features require external libraries:
|
Many of Pillow's features require external libraries:
|
||||||
|
|
||||||
* **libjpeg** provides JPEG functionality.
|
* **libjpeg** provides JPEG functionality.
|
||||||
|
@ -92,11 +96,6 @@ Linux installation
|
||||||
Fedora, Debian/Ubuntu, and ArchLinux include Pillow (instead of PIL) with
|
Fedora, Debian/Ubuntu, and ArchLinux include Pillow (instead of PIL) with
|
||||||
their distributions. Consider using those instead of installing manually.
|
their distributions. Consider using those instead of installing manually.
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
You *do not* need to install all of the external libraries to get Pillow's
|
|
||||||
basics to work.
|
|
||||||
|
|
||||||
**We do not provide binaries for Linux.** If you didn't build Python from
|
**We do not provide binaries for Linux.** If you didn't build Python from
|
||||||
source, make sure you have Python's development libraries installed. In Debian
|
source, make sure you have Python's development libraries installed. In Debian
|
||||||
or Ubuntu::
|
or Ubuntu::
|
||||||
|
@ -131,22 +130,13 @@ Prerequisites are installed on **Fedora 20** with::
|
||||||
Mac OS X installation
|
Mac OS X installation
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
.. note::
|
We provide binaries for OS X in the form of `Python Wheels <http://wheel.readthedocs.org/en/latest/index.html>`_. Alternatively you can compile Pillow with with XCode.
|
||||||
|
|
||||||
You *do not* need to install all of the external libraries to get Pillow's
|
The easiest way to install external libraries is via `Homebrew <http://mxcl.github.com/homebrew/>`_. After you install Homebrew, run::
|
||||||
basics to work.
|
|
||||||
|
|
||||||
**We do not provide binaries for OS X**, so you'll need XCode to install
|
|
||||||
Pillow. (XCode 4.2 on 10.6 will work with the Official Python binary
|
|
||||||
distribution. Otherwise, use whatever XCode you used to compile Python.)
|
|
||||||
|
|
||||||
The easiest way to install the prerequisites is via `Homebrew
|
|
||||||
<http://mxcl.github.com/homebrew/>`_. After you install Homebrew, run::
|
|
||||||
|
|
||||||
$ brew install libtiff libjpeg webp little-cms2
|
$ brew install libtiff libjpeg webp little-cms2
|
||||||
|
|
||||||
If you've built your own Python, then you should be able to install Pillow
|
Install Pillow with::
|
||||||
using::
|
|
||||||
|
|
||||||
$ pip install Pillow
|
$ pip install Pillow
|
||||||
|
|
||||||
|
@ -253,3 +243,8 @@ current versions of Linux, OS X, and Windows.
|
||||||
+----------------------------------+-------------+------------------------------+------------------------------+-----------------------+
|
+----------------------------------+-------------+------------------------------+------------------------------+-----------------------+
|
||||||
| Windows 8.1 Pro |Yes | 2.6,2.7,3.2,3.3,3.4 | 2.3.0, 2.4.0 |x86,x86-64 |
|
| Windows 8.1 Pro |Yes | 2.6,2.7,3.2,3.3,3.4 | 2.3.0, 2.4.0 |x86,x86-64 |
|
||||||
+----------------------------------+-------------+------------------------------+------------------------------+-----------------------+
|
+----------------------------------+-------------+------------------------------+------------------------------+-----------------------+
|
||||||
|
|
||||||
|
Old Versions
|
||||||
|
------------
|
||||||
|
|
||||||
|
You can download old distributions from `PyPI <https://pypi.python.org/pypi/Pillow>`_. Only the latest 1.x and 2.x releases are visible, but all releases are available by direct URL access e.g. https://pypi.python.org/pypi/Pillow/1.0.
|
||||||
|
|
|
@ -49,7 +49,7 @@ Functions
|
||||||
|
|
||||||
.. autofunction:: open
|
.. autofunction:: open
|
||||||
|
|
||||||
.. warning:: > To protect against potential DOS attacks caused by "[decompression bombs](https://en.wikipedia.org/wiki/Zip_bomb)" (i.e. malicious files which decompress into a huge amount of data and are designed to crash or cause disruption by using up a lot of memory), Pillow will issue a `DecompressionBombWarning` if the image is over a certain limit. If desired, the warning can be turned into an error with `warnings.simplefilter('error', Image.DecompressionBombWarning)` or suppressed entirely with `warnings.simplefilter('ignore', Image.DecompressionBombWarning)`. See also [the logging documentation](https://docs.python.org/2/library/logging.html?highlight=logging#integration-with-the-warnings-module) to have warnings output to the logging facility instead of stderr.
|
.. warning:: > To protect against potential DOS attacks caused by "`decompression bombs<https://en.wikipedia.org/wiki/Zip_bomb>`_" (i.e. malicious files which decompress into a huge amount of data and are designed to crash or cause disruption by using up a lot of memory), Pillow will issue a `DecompressionBombWarning` if the image is over a certain limit. If desired, the warning can be turned into an error with `warnings.simplefilter('error', Image.DecompressionBombWarning)` or suppressed entirely with `warnings.simplefilter('ignore', Image.DecompressionBombWarning)`. See also `the logging documentation<https://docs.python.org/2/library/logging.html?highlight=logging#integration-with-the-warnings-module>`_ to have warnings output to the logging facility instead of stderr.
|
||||||
|
|
||||||
Image processing
|
Image processing
|
||||||
^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
Loading…
Reference in New Issue
Block a user