12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- from io import BytesIO
- import glob
- import os
- from pathlib import Path
- import numpy as np
- import pytest
- from matplotlib.testing.decorators import image_comparison
- from matplotlib import pyplot as plt
- import matplotlib.cm as cm
- @image_comparison(['pngsuite.png'], tol=0.03)
- def test_pngsuite():
- dirname = os.path.join(
- os.path.dirname(__file__),
- 'baseline_images',
- 'pngsuite')
- files = sorted(glob.iglob(os.path.join(dirname, 'basn*.png')))
- plt.figure(figsize=(len(files), 2))
- for i, fname in enumerate(files):
- data = plt.imread(fname)
- cmap = None # use default colormap
- if data.ndim == 2:
- # keep grayscale images gray
- cmap = cm.gray
- plt.imshow(data, extent=[i, i + 1, 0, 1], cmap=cmap)
- plt.gca().patch.set_facecolor("#ddffff")
- plt.gca().set_xlim(0, len(files))
- def test_imread_png_uint16():
- from matplotlib import _png
- with (Path(__file__).parent
- / 'baseline_images/test_png/uint16.png').open('rb') as file:
- img = _png.read_png_int(file)
- assert (img.dtype == np.uint16)
- assert np.sum(img.flatten()) == 134184960
- def test_truncated_file(tmpdir):
- d = tmpdir.mkdir('test')
- fname = str(d.join('test.png'))
- fname_t = str(d.join('test_truncated.png'))
- plt.savefig(fname)
- with open(fname, 'rb') as fin:
- buf = fin.read()
- with open(fname_t, 'wb') as fout:
- fout.write(buf[:20])
- with pytest.raises(Exception):
- plt.imread(fname_t)
- def test_truncated_buffer():
- b = BytesIO()
- plt.savefig(b)
- b.seek(0)
- b2 = BytesIO(b.read(20))
- b2.seek(0)
- with pytest.raises(Exception):
- plt.imread(b2)
|