昔、仕事でプリンタドライバを作っていたことがあって、それなりの知識があるんですよ
プリンタドライバって、わりとグラフィック処理を行う要件が多いんですよね。
それで、医療用プリンタで美しい縮小を高速に行なってくれなんて要件があって、その時に使ったのがランチョスフィルタです。
この処理を高速に行なってくれって話は、そりゃハードでやれって思ったんですけど、ドライバでなんとかしろって話だったんで、めっちゃ頑張って作ってました。
メタ画像の処理を浮動小数点演算でやればCPUによっては、かなり遅くなってしまいます。
当時、Pentium3が2G超えたぐらいの頃ですよ。
まー、この頃のCPU達は、整数演算ぐらいは早かったので、乗数をかけ小数部を無くして計算させていました。
それでも、要求スペックに届かなかったんで、インラインアセンブラを使ってMMXとSSEを使ってかいてみたところ、大幅に改善しました。
しかしながら、ソースコードが、匠でないと読めないぐらいになってしまいましたけどね。
縮小したサンプルで比較してみると、わかりやすいです。
某、有名画像縮小アプリによる結果です。
こちらが、ランチョス処理を施した縮小画像です。
上の画像では、 斜めのラインにかなりのジャギーが入ってしまっているのがわかりますね。
色も少し暗い感じがしますね。
まー、細かくみなけりゃ 変わらんやろってぐらいですけどね。
最近、アプリをパワーアップして、一括縮小処理に取り組んでみました。
色々と調べながらだと、ちょいちょい便利な機能を見つけますよ。
もう2年ぐらい、ほったらかしにしてました。
Androidのバージョンアップとか、AndroidStudio 3.1 への移行とかで、非常にメンテナンスが面倒くさかったからです。
大変、ありがたいことですが、それでも、利用してくださる方が、いらっしゃるので、頑張って最新 OS Android 8 に対応してみました。
まだ、不備な処置があるかと思いますが、指摘くだされば、修正するように致します。