none
大きなサイズの画像読み込み RRS feed

  • 質問

  • VB2005です。
    メモリ1GBのパソコンで開発しています。

    Image.FromFileで2万ピクセル*2万ピクセルの画像を読み込むと
    メモリ不足のエラーが出ます。
    アクセサリのペイントのソフトでは開けます。

    これは、表示される部分のみを読み込んでいるからメモリ不足にならない、という理解で
    あってますでしょうか?

    で、自分で開発するには、すべての画像フォーマットを理解しなければならないでしょうか?

    よろしくお願いします。

    2007年3月5日 11:53

回答

  • VBで巨大画像を扱うのは困難でしょう、こう言うと語弊があるかもしれませんが。 つまりPictureBox.Image=Image...と記述して、中でどういう処理が行われているか分かりませんから。 Bitmapデータがいくつ(何重か)保持されているか見当がつきません。
    従って、Bitmap構造体を定義して画像データを読み込み表示する、という事をシンプルにストレートに行う必要があるように思います。 が当方、あいにくこの方面は不案内で、言い方が間違っているかもしれず、悪しからず。
    しかし当方も、VB2005で画像処理ソフト作りをやってます。 それで試してみれば、1GBメモリーのとき7000Pixel四方ぐらいが限度のようです。 2GBならもっと大きな画像は持てそうですが、20,000Pixel四方は無理のように想像します。
    この20,000Pixel四方というのは途方も無い大きさで、Photoshopでも(1GBメモリーの場合)表示がやっとで、画像の加工はほとんど行えません。2GBメモリーならもっと出来るかもしれませんが。
    2007年3月7日 12:25

すべての返信

  • VBで巨大画像を扱うのは困難でしょう、こう言うと語弊があるかもしれませんが。 つまりPictureBox.Image=Image...と記述して、中でどういう処理が行われているか分かりませんから。 Bitmapデータがいくつ(何重か)保持されているか見当がつきません。
    従って、Bitmap構造体を定義して画像データを読み込み表示する、という事をシンプルにストレートに行う必要があるように思います。 が当方、あいにくこの方面は不案内で、言い方が間違っているかもしれず、悪しからず。
    しかし当方も、VB2005で画像処理ソフト作りをやってます。 それで試してみれば、1GBメモリーのとき7000Pixel四方ぐらいが限度のようです。 2GBならもっと大きな画像は持てそうですが、20,000Pixel四方は無理のように想像します。
    この20,000Pixel四方というのは途方も無い大きさで、Photoshopでも(1GBメモリーの場合)表示がやっとで、画像の加工はほとんど行えません。2GBメモリーならもっと出来るかもしれませんが。
    2007年3月7日 12:25
  • お、VB2005で画像処理なんですか!
    仲間でもあり、敵でもある(^^;
    普通はCなんですけど、VBでやるのがいいんですよね。ww

    と、前置きはこれぐらいにして、おっしゃるとおり、こちらでも8000Pixel四方がやっとです。
    私はビットマップならフォーマット知ってるので、輝度値を直接読み取ることはできるのですが、
    それにしても輝度値を全部読み込めば、2万Pixel四方で約1.6GB必要になります。

    ただ、VB6の頃はAutoRedrawイメージを作成できません、というエラーがでて大きな画像を
    読むことができなかったのですが、今ならメモリさえつめば、読めるかもしれませんね。

    おっしゃるように、大きな画像を読み込みたい人は、相応のメモリー積んでください、で
    対応しようと思います。

    ありがとうございました。

    2007年3月7日 13:06