• 締切済み

VC++2005で高解像度画像の取り扱い。

いつも質問ばかりで申し訳ないのですが、独学で勉強していて聞ける人がいないので協力して頂けたらと思います。 VC++2005のOS Windows32bit環境で高解像度(10240pixel × 10240pixel以上)の画像を取り扱うにはどうしたら良いのでしょうか? Bitmap^ bmp = gcnew Bitmap( 10240, 10240 ); ~省略 pictureBox1->Image = bmp ; のような書き方をして、エラーが出てる場所は Bitmap^ bmp = gcnew Bitmap( 10240, 10240 ); の部分です。 Bitmap^ bmp = gcnew Bitmap( 5120, 5120 ); だと平気です。 メモリーが不足しています。と警告が出てるのですが、はやり32bit環境では限界なのでしょうか? PCには8GB(うち5GB、RAMディスク)のメモリーを積んでますが、そう言う問題でもないですよね。 PhotoShopやAftterEffectとかはかなりの高解像度でも表示出来てるので不可能では無いとは思うのですが、初心者レベルでは無謀なのでしょうか? 何か打開策があれば教えて頂けたら助かります。 よろしくお願いします。

みんなの回答

回答No.1

>Bitmap^ bmp = gcnew Bitmap( 10240, 10240 ); 使用するメモリの量は、幅*高さ*色数(32bit)で求めると、400MBになります。32bitの限界は、2GBなのでまだ余裕があると思われますが、内部的に制限がかかっているのかもしれません、詳細は私もわかりません。 小さい画像で作成できるのであれば、10240*10240の画像1枚を表現するために適当のサイズに分割するとよいと思います。 たとえば、10x10のテーブルの各セルに1024*1024の画像を表示するような表現にしてみたらどうでしょうか? 小さい画像なら大丈夫だと思うのですが、大きいサイズで試したことないので役に立たないかもしれません。参考までにどうぞ。

kamatarou9
質問者

お礼

回答ありがとうございます。 質問には書いてませんでしたが、最終的目標はバラバラの写真を一枚に統合して描画し、最後に出力(保存)したいと考えています。 教えて頂いた、 >10x10のテーブルの各セルに1024*1024の画像を表示 の方法で、読み込みの処理中にエラーになるのは防げそうなのですが、 最終目標の写真を一枚に統合する段階で、 結局同じ問題に悩まされています。 表示は教えて頂いた方法で、保存は別の方法と言った感じで、 もうすこし探ってみようと思います。