はじめまして。
今回は処理時間の短縮法について御意見御聞きしたくて投稿させて頂きました。
やっていることは、
(1)256色のBitmapファイルをBinaryReaderで読込み格納。
(2)2値化処理を行い、画像データ部を「00」か「01」に変換。
(3)ファイルサイズ圧縮の為8bit→1bitに。
問題としては、下記処理の際に処理時間が大変掛かってしまいます。
状況としては、
画像データ部を書き換える際(8ビットの情報を1ビットへ圧縮)の処理に時間が掛かってしまいます。
現状では、バイト配列:A(0),A(1),A(2),…に格納されている画像データを8ビット分取り出す際は、
dim B(ibyte) as byte
dim str as String
For i = 1078 To (iDatasize - 1) Step 8
str=A(i)&A(i+1)&A(i+2)&A(i+3)&A(i+4)&A(i+5)&A(i+6)&A(i+7))'画像データ部の8bit分を「str」に格納
B(i) = Convert2to10(str)'2進→10進数へ変換
Next
というように、ベタベタと変換/格納してるのですが、画像ファイルのサイズが大きくなると非常に処理が遅いです。
(50MB程度のファイルで60sec程度…)
BitConverterを使ってみたりしましたが、なかなか上手い方法が思いつかず。
そもそも見当違いな手順を踏んでいるのか…。
256色のビットマップファイルをモノクロビットマップに変換して(1/8の容量にして)効率よくバイト配列に格納する良い方法があれば指南願います!!
分かり難い文章で大変申し訳ないっす。
お礼
D-Matsu様 アドバイス有難う御座います。 頂いた方法で走らせたら即処理が終わりましたw 基本的な部分だと思うのですが、気づかずに無駄な処理をしておりました。 大変参考になりました! 有難うございました!