Bitmapクラスの上限値

諒 加藤 0 評価のポイント
2024-07-07T04:47:09.66+00:00

Bitmapクラス(Bitmap(Int32, Int32))についてお聞きします。

画像処理をするために、Bitmapクラスを使おうとしましたが、widthが25200、heightが33600の大きな画像を登録しようとしたところArgumentErrorになってしまいました。Bitmapクラスに設定できるIntに上限値があれば教えていただきたいです。

C#
C#
C 言語ファミリをルーツとし、コンポーネント指向プログラミングのサポートを含む、オブジェクト指向およびタイプセーフのプログラミング言語。
16 件の質問
0 件のコメント コメントはありません
{count} 件の投票

1 件の回答

並べ替え方法: 最も役に立つ
  1. Raina Zhao - MSFT 2,215 評価のポイント Microsoft ベンダー
    2024-07-09T06:55:19.76+00:00

    諒 加藤さん、こんにちは。

    Microsoft Q&A フォーラムにご投稿くださいましてありがとうございます。

    Bitmapクラスを使用して大きな画像を作成しようとした場合、「ArgumentException」がよく発生します。これは通常、メモリ不足か、画像サイズがGDI+の制限を超えているためです。BitmapクラスはGDI+に依存しており、GDI+は画像の最大サイズに対していくつかの制限があります。

    「GDI+」では、通常、1つの画像の最大サイズは約2^30ピクセル(約1GBのメモリ)とされています。幅が25200ピクセル、高さが33600ピクセルの画像の場合、総ピクセル数は25200×33600=846720000ピクセルになります。つまり、ピクセルあたりが4バイト(一般的32ビットの色深さ)を使用する場合、約3.15GBのメモリが必要です。これは「GDI+」が処理可能な量を超えています。

    以下の二つの方法をお勧めします。

    タイル処理を使用する: 大きな画像を小さなタイルに分割し、処理した後でタイルを結合します。

    画像サイズを小さくする: 可能であれば、メモリの制限内に収まるように画像のサイズを小さくします。

    どうぞよろしくお願いいたします。


    役に立った回答には「回答を受け入れる」と「いいね!」を押してください。さらに質問がある場合は、「コメント」を追加してください。注意:Q&Aからメール通知を受け取りたい場合には、ドキュメントの手順に基づき、メール通知を有効にしてください。

    0 件のコメント コメントはありません