gif と lzw 圧縮と gifwriter.js

Post on 09-Jul-2015

1.725 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Kyoto.js #8 で発表した内容です。

TRANSCRIPT

GIF と LZW 圧縮とGifWriter.js

id:nobuoka(@nobuoka)

2013-05-23 Kyoto.js #8

こんにちは!

id:nobuoka です

Java とか

JavaScript とか

好きです

突然ですが

GIF の発音について

「ジフ」? 「ギフ」?

https://twitter.com/christinecuoco/status/337015639698989056/photo/1 より

GIF 考案者

Steve Wilhite 氏

Webby 賞の生涯貢献賞受賞

というわけで

GIF の話

GifWriter.js という

JavaScript ライブラリを

つくりました

デモhttp://nobuoka.github.io/GifWriter.js/

canvas のピクセルデータ

(ImageData) から

GIF のバイト列を生成

ImageData

(32-bit/pixel)

Indexed colorimage

(最大 256 色)

GIF 画像バイト列

減色処理

GIF

エンコード

減色処理難しい!!

今回はメディアンカット法

GIF エンコード!!

W3C に spec があるhttp://www.w3.org/Graphics/GIF/spec-gif89a.txt

画像データは

LZW 圧縮の亜種 (?)

で圧縮される

LZW 圧縮の話

辞書式圧縮法 (の辞書の例)

圧縮後符号 生の符号の列

0 0

1 1

2 111

3 000

... ...

LZW 圧縮では生の符号の

並びから自動的に辞書が

決まる

LZW での辞書の初期状態は

圧縮後符号と生の符号が同一圧縮後符号 生の符号の列

0 0

1 1

2 2

3 3

... ...

圧縮対象符号列から

順に符号を取り出して連結

辞書になければ登録 &

辞書にある分だけ書きだし

意味がわからないと

思うので例を書きます!!

1 1 1 0 2 1 2 1 2 1 1 1圧縮対象

バッファ

圧縮後

辞書には初期状態で長さ 1 のすべての生の符号列が含まれる (圧縮後の符号値と生の符号値が同一)

圧縮後 生符号列

0 0

1 1

2 2

3 3

辞書

{ 0, 1, 2, 3 } の 4 つの符号からなる符号列の LZW 圧縮の例

1 1 1 0 2 1 2 1 2 1 1 1圧縮対象

バッファ

圧縮後

まずは最初の符号を取り出す

圧縮後 生符号列

0 0

1 1

2 2

3 3

辞書

1

1 1 0 2 1 2 1 2 1 1 1圧縮対象

バッファ

圧縮後

1 は既に辞書に入っているので次の符号の取り出しへ

圧縮後 生符号列

0 0

1 1

2 2

3 3

辞書

1 1

1 0 2 1 2 1 2 1 1 1圧縮対象

バッファ

圧縮後

1 1 は辞書にないので辞書に追加して、辞書にある部分だけ (最後の符号を除いた前の部分) を書きだし

圧縮後 生符号列

0 0

1 1

2 2

3 3

4 1 1

辞書

1

1

1 0 2 1 2 1 2 1 1 1圧縮対象

バッファ

圧縮後

次の符号を取り出す

圧縮後 生符号列

0 0

1 1

2 2

3 3

4 1 1

辞書

1

1 1

0 2 1 2 1 2 1 1 1圧縮対象

バッファ

圧縮後

1 1 は辞書にあるので、次の符号の取り出しへ

圧縮後 生符号列

0 0

1 1

2 2

3 3

4 1 1

辞書

1

1 1 0

2 1 2 1 2 1 1 1圧縮対象

バッファ

圧縮後

1 1 0 は辞書にないので辞書に追加し、辞書に存在する部分だけを書きだす

圧縮後 生符号列

0 0

1 1

2 2

3 3

4 1 1

5 1 1 0

辞書

1 4

0

2 1 2 1 2 1 1 1圧縮対象

バッファ

圧縮後

圧縮後 生符号列

0 0

1 1

2 2

3 3

4 1 1

5 1 1 0

辞書

という操作を繰り返す

なるほど!!!!

皆さんも圧縮アルゴリズムを

考案しましょう!!!!

top related