Repository navigation
Lossless Optimization of PNG files #74845
Description
Activity
tiagofilipesilva commented
on Jun 13, 2017 tiagofilipesilvamannequinMannequinAuthorMore actionsI took the liberty to apply tools that optimize the binary weight (without loss of quality) of the 14 PNG files present in the Python 3.7 source tree and then applied a pull request (bpo-2141).
Is there anything to be discussed? Thanks.
- added3.7 (EOL)end of lifeend of lifeperformancePerformance or resource usagePerformance or resource usage
on Jun 13, 2017 What tools did you use, optipng, advpng, pngcrush, pngnq, pngquant, or other? How much space is saved?
Note that some tools remove an information about palette that makes files displaying differently on different platforms and output devises.
I suggest to work on Sphinx to propose to implement this optimization on the HTML rendering, maybe with optional external tools. What do you think?
Another attempt: bpo-27461 :-)
tiagofilipesilva commented
on Jul 14, 2017 tiagofilipesilvamannequinMannequinAuthorMore actionsSorry for the late reply. I had to deal with stuff.
serhiy.storchaka:
What tools did you use, optipng, advpng, pngcrush, pngnq, pngquant, or other? How much space is saved?
I had half a crate of whiskey that day so I'm going to say optipng and pngcrush were used and if my recollection is good the saved space was ≈ 5 to 50 % depending on the file.
Note that some tools remove an information about palette that makes files displaying differently on different platforms and output devises.
I am aware of that. But if I understood correctly these files are rendered in documentation, and I don't think they're going to do this in a PlayStation 2. There may be complaints with Windows XP users because I remember for sure that optimized PNG files could not render very well back in those days.
haypo:
I suggest to work on Sphinx to propose to implement this optimization on the HTML rendering, maybe with optional external tools. What do you think?
Like you I'm very fond of a long-term proper solution and that is, by the way, the solution you deserve.
Unfortunately, I do not have the skills for provide that. I can only give the solution you need (which is smaller files).
It seems PR author removed his repository and the PR can't be merge via conflict.
In master branch:
02:18 $ ll **/.png
-rw-r--r-- 1 inada-n staff 3732 7 1 02:13 faq/python-video-icon.png
-rwxr-xr-x 1 inada-n staff 49648 7 1 02:09 howto/logging_flow.png
-rw-r--r-- 1 inada-n staff 24719 7 1 02:09 library/depgraph-output.png
-rw-r--r-- 1 inada-n staff 11148 7 1 02:09 library/hashlib-blake2-tree.png
-rw-r--r-- 1 inada-n staff 11280 7 1 02:09 library/pathlib-inheritance.png
-rw-r--r-- 1 inada-n staff 45021 7 1 02:09 library/tulip_coro.png
-rw-r--r-- 1 inada-n staff 39585 7 1 02:09 library/turtle-star.png
-rw-r--r-- 1 inada-n staff 48994 7 1 02:13 using/win_installer.pngIn lossless_png branch:
$ ll **/*.png -rw-r--r-- 1 inada-n staff 2791 7 1 02:28 faq/python-video-icon.png -rwxr-xr-x 1 inada-n staff 19351 7 1 02:28 howto/logging_flow.png* -rw-r--r-- 1 inada-n staff 11158 7 1 02:28 library/depgraph-output.png -rw-r--r-- 1 inada-n staff 10590 7 1 02:28 library/hashlib-blake2-tree.png -rw-r--r-- 1 inada-n staff 6168 7 1 02:28 library/pathlib-inheritance.png -rw-r--r-- 1 inada-n staff 33565 7 1 02:28 library/tulip_coro.png -rw-r--r-- 1 inada-n staff 29964 7 1 02:28 library/turtle-star.png -rw-r--r-- 1 inada-n staff 37942 7 1 02:28 using/win_installer.png
03:19 $ find . -name '*.png' | xargs optipng -o7
03:20 $ ll **/*.png
-rw-r--r-- 1 inada-n staff 2888 7 1 03:20 faq/python-video-icon.png
-rw-r--r-- 1 inada-n staff 22058 7 1 03:20 howto/logging_flow.png
-rw-r--r-- 1 inada-n staff 11146 7 1 03:20 library/hashlib-blake2-tree.png
-rw-r--r-- 1 inada-n staff 6456 7 1 03:20 library/pathlib-inheritance.png
-rw-r--r-- 1 inada-n staff 36812 7 1 03:20 library/tulip_coro.png
-rw-r--r-- 1 inada-n staff 33808 7 1 03:20 library/turtle-star.png
-rw-r--r-- 1 inada-n staff 42117 7 1 03:20 using/win_installer.pngWhile this output is bigger than PR-2141, I think it's good enough.
- added3.8 (EOL)end of lifeend of lifedocsDocumentation in the Doc dirDocumentation in the Doc dirand removed3.7 (EOL)end of lifeend of life
on Jul 1, 2018
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields: