Was ist die maximale Auflösung von C# .NET Bitmap?

Theoretisch sollte es sein 65,535 x 65,535 gegeben, Sie haben genug Speicher, etwa 17 GB.

Jedoch, die Schaffung eines .NET 4.5-Konsole-Anwendung zu testen Sie es aus, wirft es System.ArgumentException: der Parameter ist nicht gültig.

Die Anwendung wurde für die 64-bit-Plattform. Läuft auf 64-bit-Plattform mit 32 GB Speicher. Die maximale Auflösung habe ich in der Lage zu bekommen, ist mit 22.000 x 22,000 Pixel.

Konnte ich nicht finden, keine Dokumentation, die auf dieser.

Und merkwürdiges Verhalten ist, dass selbst bei 22.000 x 22,000 Pixel, funktioniert es nicht immer. Es funktioniert manchmal, und manchmal wirft die Ausnahme. Diese machen mich denken, dass es um zusammenhängende Speicherzuweisung, aber es ist über 30GB freien Speicher.

Hat jemand schon Erfahrung mit dieser? Und wenn ich wollte mit sagen, mit 100.000 x 100.000 pixel Bild und größer, was wäre der beste Weg, neben der Umsetzung meiner eigenen bitmap?

EDIT: Das problem ist nicht .NET die Maximale Größe des Objekts. Dies kann überwunden werden, indem Sie auf die 64-bit-Plattformen, und die Einstellung des gcAllowVeryLargeObjects Flagge in der Anwendung-config. Auf diese Weise kann ich die Anwendung konsumieren über 15 GB Speicher mit einem einzigen Integer-array. Bisher scheint die Antwort zu liegen, die in der zugrunde liegenden Implementierung der GDI+, aber wie bekomme ich es?

  • .NET Bitmap mit GDI+ verwendet, siehe dieser Frage für die Diskussion über Einschränkungen stackoverflow.com/questions/2932436/...
  • Ich zerlegte den Konstruktor Bitmap(int,int), und es fordert GdipCreateBitmapFromScan0, die müssen einen Fehler-code. Der Konstruktor Bitmap-Karten Fehler-codes die zu verschiedenen .NET Ausnahmen.
  • Aus Interesse, warum sagst du 65,535 x 65,535? Für Image (das BitMap ist eine Unterklasse von), die Width und Height Eigenschaften int Arten, in der Erwägung, dass Ihre Frage impliziert, Sie sind ushort.
  • Es scheint sich nicht um eine echte Einschränkung. new Bitmap(33.488.914, 1) ist das maximum, das funktioniert für mich in einer einzigen dimension.
  • 65535 x 65535 ist die maximale jpeg-format beschränkt 256*256
Schreibe einen Kommentar