Skip to content

Lossless Optimization of PNG files #74845

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
tiagofilipesilva mannequin opened this issue Jun 13, 2017 · 7 comments
Closed

Lossless Optimization of PNG files #74845

tiagofilipesilva mannequin opened this issue Jun 13, 2017 · 7 comments
Labels
3.8 (EOL) end of life docs Documentation in the Doc dir performance Performance or resource usage

Comments

@tiagofilipesilva
Copy link
Mannequin

tiagofilipesilva mannequin commented Jun 13, 2017

BPO 30660
Nosy @vstinner, @methane, @serhiy-storchaka, @tiagofilipesilva
PRs
  • bpo-30660: Replaced PNG files with their lossless optimized version #2141
  • bpo-30660: Doc: Optimize PNG files #8032
  • 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:

    assignee = None
    closed_at = <Date 2018-07-01.07:03:26.091>
    created_at = <Date 2017-06-13.23:11:28.720>
    labels = ['docs', '3.8', 'performance']
    title = 'Lossless Optimization of PNG files'
    updated_at = <Date 2018-07-01.07:03:26.088>
    user = 'https://github.com/tiagofilipesilva'

    bugs.python.org fields:

    activity = <Date 2018-07-01.07:03:26.088>
    actor = 'methane'
    assignee = 'docs@python'
    closed = True
    closed_date = <Date 2018-07-01.07:03:26.091>
    closer = 'methane'
    components = ['Documentation']
    creation = <Date 2017-06-13.23:11:28.720>
    creator = 'tfs'
    dependencies = []
    files = []
    hgrepos = []
    issue_num = 30660
    keywords = ['patch']
    message_count = 7.0
    messages = ['295969', '295989', '295990', '298375', '320795', '320801', '320826']
    nosy_count = 5.0
    nosy_names = ['vstinner', 'methane', 'docs@python', 'serhiy.storchaka', 'tfs']
    pr_nums = ['2141', '8032']
    priority = 'normal'
    resolution = 'fixed'
    stage = 'resolved'
    status = 'closed'
    superseder = None
    type = 'resource usage'
    url = 'https://bugs.python.org/issue30660'
    versions = ['Python 3.8']

    @tiagofilipesilva
    Copy link
    Mannequin Author

    tiagofilipesilva mannequin commented Jun 13, 2017

    I 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.

    @tiagofilipesilva tiagofilipesilva mannequin added 3.7 (EOL) end of life performance Performance or resource usage labels Jun 13, 2017
    @serhiy-storchaka
    Copy link
    Member

    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.

    @vstinner
    Copy link
    Member

    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
    Copy link
    Mannequin Author

    tiagofilipesilva mannequin commented Jul 14, 2017

    Sorry 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).

    @methane
    Copy link
    Member

    methane commented Jun 30, 2018

    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.png

    In 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

    @methane
    Copy link
    Member

    methane commented Jun 30, 2018

    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.png

    While this output is bigger than PR-2141, I think it's good enough.

    @methane
    Copy link
    Member

    methane commented Jul 1, 2018

    New changeset c6cd164 by INADA Naoki in branch 'master':
    bpo-30660: Doc: Optimize PNG files by optipng (GH-8032)
    c6cd164

    @methane methane added 3.8 (EOL) end of life docs Documentation in the Doc dir and removed 3.7 (EOL) end of life labels Jul 1, 2018
    @methane methane closed this as completed Jul 1, 2018
    @ezio-melotti ezio-melotti transferred this issue from another repository Apr 10, 2022
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    3.8 (EOL) end of life docs Documentation in the Doc dir performance Performance or resource usage
    Projects
    None yet
    Development

    No branches or pull requests

    3 participants