Programowo zmień rozdzielczość obrazu

Obliczyłem, że jeśli chcę, aby mój wygenerowany obraz miał rozmiar A4 @ 600DPI do celów drukowania, musi to być 7016x4961px @ 72dpi. Więc generuję go programowo, a następnie testuję w Photoshopie i wydaje się być w porządku, więc jeśli zmienię jego rozmiar, otrzyma odpowiedni rozmiar i rozdzielczość

Okno dialogowe rozmiaru obrazu w Photoshopie.

Zastanawiam się nad tym, czy jest możliwość programowej zmiany rozmiaru, najlepiej z PIL, ale niekoniecznie z nim. Muszę zrobić wyższe DPI.

Author: Sergei Basharov, 2012-02-07

2 answers

Jeśli wygenerowałeś obraz o rozdzielczości 7016 x 4961 px, to jest to już A4 przy rozdzielczości 600 dpi. Więc nie musisz zmieniać jego rozmiaru, wystarczy ustawić informacje o rozdzielczości w pliku.

Możesz to zrobić z PIL:

from PIL import Image

im = Image.open("test.png")
im.save("test-600.png", dpi=(600,600))
 30
Author: MatthieuW,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-09 20:43:25

Ten kod zmieni rozmiar obrazu PNG na 7016x4961 za pomocą PIL:

size = 7016, 4961
im = Image.open("my_image.png")
im_resized = im.resize(size, Image.ANTIALIAS)
im_resized.save("my_image_resized.png", "PNG")

Być może lepszym rozwiązaniem byłoby zwiększenie płótna x razy przed drukowaniem, gdzie x jest czynnikiem, który musisz ustalić (rozmiar 7016x4961 dla tego konkretnego obrazu).

 15
Author: Chewie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-11 02:25:19