C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

BitmapDataを使って画像のリサイズ

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■88411 / inTopicNo.1)  BitmapDataを使って画像のリサイズ
  
□投稿者/ ヒロト (1回)-(2018/08/27(Mon) 22:54:24)

分類:[C#] 

下のコードを使えばbitmapAの拡大画像をbitmapBに描画することができますが、
大量の画像を処理するときに遅くなってしまいます。

// DrawImageを使う方法
Bitmap bitmapA = new Bitmap(pictureBox1.Image);
Bitmap bitmapB = new Bitmap((int)(bitmapA.Width * 1.5), (int)(bitmapA.Height * 1.5));

Graphics graphics = Graphics.FromImage(bitmapB);
graphics.DrawImage(bitmapA,
new Rectangle(0,0, (int)(bitmapA.Width * 1.5), (int)(bitmapA.Height * 1.5))
, new Rectangle(0, 0, bitmapA.Width, bitmapA.Height), GraphicsUnit.Pixel);
graphics.Dispose();
pictureBox2.Image = bitmapB;

そこで、LockBitsを使ってBitmapData経由でバイト配列を取得した後、取得した配列を使って上のコードと同じ動きをさせたいのですが、
どうすればいいのでしょうか。



引用返信 編集キー/
■88412 / inTopicNo.2)  Re[1]: BitmapDataを使って画像のリサイズ
□投稿者/ Azulean (986回)-(2018/08/28(Tue) 06:30:58)
2018/08/28(Tue) 06:31:57 編集(投稿者)

No88411 (ヒロト さん) に返信
> そこで、LockBitsを使ってBitmapData経由でバイト配列を取得した後、取得した配列を使って上のコードと同じ動きをさせたいのですが、
> どうすればいいのでしょうか。

同じ動き(拡大の補間処理)を自力で書いた方がたぶん遅くなります。


基本的に画像処理は遅いものです。
それを大量に処理する場合は時間がかかるものです。
(並列化するとか、特定の CPU に特化した高速なライブラリを使うとか)
引用返信 編集キー/
■88414 / inTopicNo.3)  Re[2]: BitmapDataを使って画像のリサイズ
□投稿者/ ぶなっぷ (188回)-(2018/08/28(Tue) 09:19:07)
たぶん、まともに数学的な変換式をあてても、大して速くはならないでしょう。
しかし、余計な処理を省いていけば、もしかしたら速くなるかもしれません。
  http://fussy.web.fc2.com/algo/algo4-2.htm

引用返信 編集キー/
■88415 / inTopicNo.4)  Re[1]: BitmapDataを使って画像のリサイズ
□投稿者/ 魔界の仮面弁士 (1802回)-(2018/08/28(Tue) 10:51:07)
No88411 (ヒロト さん) に返信
> 下のコードを使えばbitmapAの拡大画像をbitmapBに描画することができますが、
> 大量の画像を処理するときに遅くなってしまいます。

TextureBrush だとどうでしょうか。
http://dobon.net/vb/bbs/log3-39/23844.html
引用返信 編集キー/
■88416 / inTopicNo.5)  Re[1]: BitmapDataを使って画像のリサイズ
□投稿者/ にゃるら (40回)-(2018/08/28(Tue) 11:35:00)
No88411 (ヒロト さん) に返信

OpenCVを使ってみるのはどうでしょうか?
http://schima.hatenablog.com/entry/20091031/1256975329

引用返信 編集キー/
■88419 / inTopicNo.6)  Re[2]: BitmapDataを使って画像のリサイズ
□投稿者/ ヒロト (2回)-(2018/08/28(Tue) 20:06:07)
皆様ありがとうございます。
教えてくださったことを参考にしつつ、時間短縮を目指していきたいと思います。

わからないことができたらまた質問しようと思います。

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ