画像一覧の画像を作成するソフトの処理を高速化しました。

この度、

画像一覧の画像を作成するソフトを、
バージョン17に、更新して。
http://oyk3865b.blog13.fc2.com/blog-entry-1040.html


処理を高速化しました。(たぶん・・・。)


更新は、こちらの記事よりダウンロードして、
上書きして下さい。






さて。

今回の記事では、
その高速化?に至るまでの過程を、記事にしたいと思います。


処理の高速化の柱として、
画像を、サムネイルとして縮小する処理を、
変更しました。


(他にも、画像のメモリ解放が不十分な部分があったので、
随時、解放して、高速化させました。)




のためのサンプルとして。
Visual Basic2015で、その縮小するコード部分だけの動作を、
色々なコードに書き換えて、試してみました。

これまでは、



↑のように、特に、縮小する画像の補間方法を決めずに、
初期値のまま、扱っておりました。


の場合。
3240ピクセル×4320ピクセルの
P1030502 - コピー
こういった画像を幅と高さを1/10のサイズに縮小処理を10回通すと、
私のPC環境では、 およそ、1300ミリ秒かかりました。




尚、従来バージョンの「低品質・高速」モードでは、
snapshot009322765.jpg


と指定して、補間モードを、『低品質補間』としていたのですが。
こちらも、およそ、1300ミリ秒と。
あまり変化が、得られていませんでした。

(実行結果。)
test.jpg



また、従来バージョンの「高品質・低速」モードでは、
と指定して、補間モードを、『高品質双三次補間』としています。
同様の処理では、およそ、2050ミリ秒。
かかっております。

(実行結果。)
test_20151011084748eea.jpg

詳しくは、
http://dobon.net/vb/dotnet/graphics/interpolationmode.html
↑『補間方法を指定して画像を拡大、縮小(スケーリング)表示する: .NET Tips: C#, VB.NET』を、参照のこと。





そこで。

『補間方法を指定して画像を拡大、縮小(スケーリング)表示する: .NET Tips: C#, VB.NET』
のページを読みなおすと、


・最近傍補間、ニアレストネイバー法 の方が、
画像一覧の画像を作成するソフトには向いていることが分かり。
(最初から気づいておくべきでした・・・。)

早速、その補間方法に変更してみたところ。

・最近傍補間、ニアレストネイバー法
およそ、670ミリ秒。

と、従来よりも、速い結果が得られました。

このため、早速、
「標準」と、「低画質・高速」モードにて、
これらの補間方法へと、変更させていただきました。

(実行結果。)
test_20151011085340327.jpg




また、他の方法として。

Windowsに画像の拡大縮小用に用意されている。
StretchBlt関数を、利用することも、試してみたのですが。
https://msdn.microsoft.com/ja-jp/library/cc428770.aspx



ちらのサイトを参考にコードを組んでみて。試したところ。
http://homepage1.nifty.com/rucio/commu/ThreadDetail_ThreadId_9542.htm

およそ、1600ミリ秒。

と、従来よりも、遅くしかも、にじんだ画像となる結果が得られました。

test_20151011085937360.jpg
このため、StretchBlt関数での処理案は、
私のStretchBlt関数の扱い方に誤りがある可能性も大きいですが。
棄却させていただきました


他にも、
StretchBlt関数では、CPUの使用率が、DrawImageの場合と異なる挙動となったので、
この場にて、書き記しておこうと思います。
snapshot008797781.jpg




以上
画像一覧の画像を作成するソフトを、バージョン17に、更新した内容に関する記事でございました。
http://oyk3865b.blog13.fc2.com/blog-entry-1040.html


お粗末さまでございました。

スポンサーサイト

テーマ : プログラミング - ジャンル : コンピュータ

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック


この記事にトラックバックする(FC2ブログユーザー) URL

プロフィール





最新記事
最新コメント
最新トラックバック



月別アーカイブ
カテゴリ