8000 Merge pull request #9066 from dstansby/agg-jpg-dpi · matplotlib/matplotlib@24817d5 · GitHub
[go: up one dir, main page]

Skip to content

Commit 24817d5

Browse files
authored
Merge pull request #9066 from dstansby/agg-jpg-dpi
Let dpi be set when saving JPEG using Agg backend
2 parents fc4d690 + 6cd8a00 commit 24817d5

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

lib/matplotlib/backends/backend_agg.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -568,9 +568,13 @@ def print_jpg(self, filename_or_obj, *args, **kwargs):
568568
background = Image.new('RGB', size, color)
569569
background.paste(image, image)
570570
options = {k: kwargs[k]
571-
for k in ['quality', 'optimize', 'progressive']
571+
for k in ['quality', 'optimize', 'progressive', 'dpi']
572572
if k in kwargs}
573573
options.setdefault('quality', rcParams['savefig.jpeg_quality'])
574+
if 'dpi' in options:
575+
# Set the same dpi in both x and y directions
576+
options['dpi'] = (options['dpi'], options['dpi'])
577+
574578
return background.save(filename_or_obj, format='jpeg', **options)
575579
print_jpeg = print_jpg
576580

lib/matplotlib/tests/test_agg.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,3 +234,16 @@ def test_chunksize():
234234
rcParams['agg.path.chunksize'] = 105
235235
ax.plot(x, np.sin(x))
236236
fig.canvas.draw()
237+
238+
239+
@pytest.mark.backend('Agg')
240+
def test_jpeg_dpi():
241+
try:
242+
from PIL import Image
243+
except Exception:
244+
pytest.skip("Could not import PIL")
245+
# Check that dpi is set correctly in jpg files
246+
plt.plot([0, 1, 2], [0, 1, 0])
247+
plt.savefig('test.jpg', dpi=200)
248+
im = Image.open("test.jpg")
249+
assert im.info['dpi'] == (200, 200)

0 commit comments

Comments
 (0)
0