CrushPNGの詳しい説明
https://gyazo.com/7a1f8a5cdf28280c0ba77c28bf7e2891
さぁ説明していきますわよ!
1.CrushPNGの仕組み
1-a.PNG Glitch
PNGには画像サイズを小さくするために5種類のフィルタをかけている。
そしてPNGを読み込む時にはかけたフィルタを正しく解除しているわけです。
https://gyazo.com/c46f2d1b27a4bc412edb60c4a0be55dc
では,間違ったフィルタで解除するとしたらどうなるでしょう?
当然,フィルタをかける前とは違った画像になりますよね?
それがCrushPNGの仕組みです。
※PNG Glitchと呼ばれる
https://gyazo.com/14b87f6e9db5cccc73b0089816ee01dd
1-b.フィルタについて
で、その5つのフィルタは何ぞやという話ですが,
table:png
0 None なし
1 Sup 横方向(左)
2 Up 縦方向(上)
3 Average 左と上
4 Paeth よくわからん
です。
「1」でフィルタリングをした場合は,「1」の解除方法を
「4」でフィルタリングをした場合は,「4」の解除方法を
ってことです
https://gyazo.com/d293200f6bd6690b6070b4a6f8607795
0
何もしないフィルタなので元の画像
https://gyazo.com/c6698890db62fb6e44b15a3cb9536739
1
https://gyazo.com/eb5b8857b5aa28e68f7904c5647f7cbc
2
https://gyazo.com/201e60b1d9c2306fb22d0e9050f6d810
3
https://gyazo.com/53cc25cdca353b2b6a2dddb60ae40db0
4
1-c.CrushPNGのフィルタリングと解除
AviUtlで送られてくる画像データは,PNGファイルではありません。
なのでフィルタリングして解除するということをする。
当然,フィルタリングをするスクリプトが@フィルタリングで
解除をするスクリプトが@フィルタ解除です。
2.CrushPNGのパラメータとその処理内容
2-a. 種類 , %
https://gyazo.com/496929009715f0fda3970510fab5eb6f
画像のような場合,
1のフィルタで100%フィルタリングして,
100%フィルタ解除
という意味になります
※2で100%解除という意味ではないので注意
https://gyazo.com/c6698890db62fb6e44b15a3cb9536739
1のフィルタで100%フィルタリングした画像
その後に100%フィルタ解除しているのでグリッチは起こりません。
https://gyazo.com/b8c787c35c813509a1ec15ac9067557f
この場合は,
1のフィルタで100%フィルタリングして,
0%フィルタ解除,100% 2のフィルタ解除方法でフィルタ解除
という意味になります
https://gyazo.com/9aaa26c66241d649d425b753b153d33f
間違った方法で解除しているので画像がおかしくなっている。
https://gyazo.com/74bed76dae1eef12b04fa6aec86bf1be
この場合は,
1のフィルタで75%フィルタリングして,
75%フィルタ解除, 25% 2のフィルタ解除方法でフィルタ解除
という意味になります
75%フィルタリング の残りの25%は0でフィルタリングされます
つまり25%の画像データは変わらないという事です。
https://gyazo.com/c77ca4a9eae034ac7250a02e5b9cd6be
75%フィルタリングしているので少しだけ元画像データがのこる
https://gyazo.com/5d4b798c6b2fc7ce6c9228079bff82d2
75%解除しているので殆ど元画像になっている
が,25%は間違って解除されているので変な部分がある
種類については
PNGフィルタの0,1,2,3,4に加え,
その逆方向の-1,-2,-3,-4,
そしてごちゃ混ぜの5です。
2-b. 最小 , 長さ
https://gyazo.com/70cd9467458afb3b6f27d74c43399b58
この場合は,
25のサイズごとに50%フィルタリングされ,
75のサイズごとに50%解除される
このように描画される
https://gyazo.com/68262181842cb8e34c163ffe17183cfa
さっきよりかは太いね
フィルタリングのみでは
https://gyazo.com/8c070287edd7e3bec4a84fb5b5de8c47
こうなる
解除のみでは
https://gyazo.com/8b0aeecabdde7d0fb8d3bd15ba585434
こうなる
言語化が難しいですがまぁこんな感じです。
https://gyazo.com/1362ea49f68e3fd008f6f5b34a1282b4
https://gyazo.com/2f488fc1ca058b6b24912f71efb5ffad
長さを設定すると
最小 ~ 最小+長さ のサイズごとにフィルタリング/解除されるようになります。
画像の場合,
1~14 が1つのまとまりということです。
https://gyazo.com/65a62989a1c197e556b6afe4c41af6b5
2-c.その他のパラメータ
種類5(-4~4)
種類を5にするとランダムにフィルタが選ばれます。
そのランダムの要素を設定します。
{ "要素1" , "要素2" ... }のように設定します
https://gyazo.com/1ce40a2f6457b7840bfc2ec5ab8ac92d
ランダムだね
seed,frame
乱数を決めるためのシードとフレーム値を入れます
コマ落ち風にグリッチを変化させたいのなら
frameにobj.frame / Nといれてください。
N : コマ落ち数
※obj.randの引数に使っているだけです
アルファ有
透明度もフィルタをかけるかどうかです。
穴が開いていたり,透過画像じゃ無い限り,チェック無しが良い
https://gyazo.com/81c95d8aeed93aa2a0246a009283fa00
チェックなし
https://gyazo.com/0aaae9493c3bf1c07ac4fecc31ccfab9
チェックあり
方向
値が1増えるにつれて90度回転してグリッチする
https://gyazo.com/4685155a54d83da6779ab21987c00a3d
0
https://gyazo.com/aea860a2440d35c415b2dd31706eb7fd
1
終わり!!!!
最後の方は急いで書いたのでいつか書き加えるかも(多分しない)