Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lossy PNG for true-color images (Velocity Conf ...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kornel Lesiński
November 18, 2014
Design
920
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Lossy PNG for true-color images (Velocity Conf EU 2014)
Kornel Lesiński
November 18, 2014
More Decks by Kornel Lesiński
See All by Kornel Lesiński
SudWeb
kornel
0
260
Modern PNG compressors
kornel
13
1.2k
Handling binary data in JS
kornel
1
420
Mobblestouch — W3C Touch Events and gestures
kornel
2
760
Server-Sent Events
kornel
5
1k
"HTML5" Transport Protocol
kornel
3
430
Front-end Performance
kornel
5
530
Other Decks in Design
See All in Design
Debiasing Your Software Design Decision-Making @ Flowcon '26
baasie
1
120
Signull 団体説明資料
signull
0
710
AIスライド生成を進化させるMDファイル
kenichiota0711
1
1.5k
ISO 9241-171:2025っていうのがあってな
shosira
1
210
デザインとフロントエンドの境界が融ける Claude Code × Figma
littlebusters
2
3.2k
図面資産×AI 眠れる資産を起こす挑戦
aonomasahiro
0
180
デザインツールを開く前に その画面は誰に何と言わせたい?受託UIデザイナーが顧客解像度を高める 「打ち合わせの場での確かめ方」
garyuten
1
120
社長の宿題への回答 「新卒×AI」が生み出す価値
saki822
2
180
空間アプリ開発のフィードバックをCodexにするための抽象的なデザインツールの模索
karad
0
160
AI時代に求められるUXデザインのアプローチ
xtone
1
6.8k
Build for the Web, Build on the Web, Build With the Web
csswizardry
0
480
Accelerating performance improvement based on a software review evaluation matrix
kitanosirokuma
0
270
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
190
Typedesign – Prime Four
hannesfritz
42
3.1k
Writing Fast Ruby
sferik
630
63k
Optimising Largest Contentful Paint
csswizardry
37
3.8k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
390
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
420
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
30 Presentation Tips
portentint
PRO
1
350
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