$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lossy PNG for true-color images (Velocity Conf ...
Search
Kornel Lesiński
November 18, 2014
Design
2
890
Lossy PNG for true-color images (Velocity Conf EU 2014)
Kornel Lesiński
November 18, 2014
Tweet
Share
More Decks by Kornel Lesiński
See All by Kornel Lesiński
SudWeb
kornel
0
210
Modern PNG compressors
kornel
13
1.2k
Handling binary data in JS
kornel
1
400
Mobblestouch — W3C Touch Events and gestures
kornel
2
730
Server-Sent Events
kornel
5
980
"HTML5" Transport Protocol
kornel
3
400
Front-end Performance
kornel
5
490
Other Decks in Design
See All in Design
TWCP#21 UXデザインと哲学のはなし
shinn
0
160
Vibe Coding デザインシステム
poteboy
3
1.6k
AIエージェントが対話的なUIを返す!MCP−UIで変わるユーザ体験
daitasu
1
110
OSO2025-マサカリと太陽:伝え方の情報デザイン
majimasachi
0
580
「自分の仕事はどこまで?」と問い続けたら。デザイナーの「視座」を考える
mukai_takeru
0
270
企業にデザインが融けたとき、デザイナーにできること。事業会社12年間の探究と葛藤 / Designship2025
visional_engineering_and_design
0
1.2k
デザイナーがAIを使い倒して爆速プロダクト開発!社内ハッカソンでの取り組み紹介
abokadotyann
9
2.8k
【サイバーエージェント】Creative Switch 会社説明資料
cyberagent_creators
0
3.8k
これからの「Webデザイン」の話をしよう~デザイナーの私が考えるブロックテーマへの対応で変わりゆくデザインの価値~
ds35mm
0
460
逆向きUIの世界 〜iOSアプリのRTL言語対応〜
akatsuki174
1
360
組織の右腕として共創する ー デザインと経営の二つの視点から見えた、新しい支援のかたち/ Designship2025_Nishimura
root_recruit
0
250
はじめての演奏会フライヤーデザイン
chorkaichan
1
200
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
0
440
SEO for Brand Visibility & Recognition
aleyda
0
4.1k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
0
31
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
0
88
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
150
We Have a Design System, Now What?
morganepeng
54
7.9k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
170
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The Pragmatic Product Professional
lauravandoore
37
7.1k
Raft: Consensus for Rubyists
vanstee
141
7.3k
Transcript
Lossy PNG Kornel Lesiński 2014
PNG Lossless JPEG Lossy
PNG PNG JPEG Lossless Lossy PNG Opaque Alpha Channel WebP
JPEG 2000 JPEG XR JPEG XT if you need lossy and alpha, it becomes complicated. You may need to serve 4 different files for every image!
flickr.com/photos/ama711/8760361969 0% 100% Lossy PNG is a hack, but it
works like a truly lossy format
Pixels Math gzip Standard PNG
None
gzip finds and removes repeated sequences of identical pixels
00000000 00000001 00000010 00000011 00000100 00000101 00000110 00000111 00001000 00001001
00001010 0 10 110 1110 11110 111110 1111110 11111110 111111110 1111111110 11111111110 → → → → → → → → → → → Instead of storing 8 bits per byte, gzip uses variable-length sequences. Most popular bytes are given shortest sequences.
Some images don’t have repeated pixels and few very popular
colors
0 1 2 3 4 5 6 7 8 9
0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = = Instead of storing uncompressible absolute values PNG can store difference between neighboring pixels
5 6 4 6 5 5 6 4 5 4
5 + 1 -2 +2 - 1 0 + 1 -2 + 1 - 1 = = 5 0 0 0 0 0 0 0 0 0 0 Noisy images won’t compress well… unless you fake the data and remove the noise
Pixels Math gzip Lies Lossy PNG trick is about replacing
math with lies. Only the encoder changes, so it’s 100% compatible.
? When PNG “guesses” what the next pixel will be,
it can make the guess based on average of 2 neighbors, which in lossy PNG causes blur
flickr.com/photos/tundra-ice/5124841152 Original: 2MB 0.6MB 0.3MB
Original: 2MB 0.6MB 0.3MB
Original: 221KB Lossy: 67KB ed_g2s
182KB flickr.com/photos/_tar0_/6223343149
27KB flickr.com/photos/_tar0_/6223343149 The algorithm can decide quality of every pixel,
so it tends to preserve sharp edges, especially text
28KB flickr.com/photos/_tar0_/6223343149 Top of the file has 0% quality, bottom
80% quality
• Works everywhere—fully backwards-compatible • No color limit—supports 24 and
32-bit PNG • Preserves edges—per-pixel quality control • Very fast—small tweak in the encoder • Streamable—only needs 2 lines of the image
pngquant -Q 75-100 --skip-if-larger \ -o out.png in.png || posterize
-b -Q 75 in.jpg out.jpg pngquant is often more efficient, but can’t guarantee quality. You can combine the two for best results.
pngmini.com — ImageAlpha GUI github.com/pornel/mediancut-posterizer CLI logicnet.dk/Analyzer — Image Analyzer
GUI @pornelski pngmini.com/lossypng.html