Bei der Arbeit mit großen Bitmaps tritt eine Ausnahme wegen zu wenig Arbeitsspeicher auf

8

Ich muss das Bild im laufenden Betrieb bearbeiten (die Höhe vergrößern). Die Datei ist meist 5000 * 4000 in der Dimension. Ich sehe, dass der Speicher bis zum Höchststand schießt, wenn ich ein BMP mit großen Dimensionen erstelle und die Graphics.DrawImage-Methode für die bmp-Instanz aufruft.

Wie entferne ich die Ausnahme wegen nicht ausreichendem Speicher? Gibt es eine Möglichkeit, mit großen Bitmaps in c # zu arbeiten?

?     
Ulab 11.07.2011, 08:56
quelle

2 Antworten

4

Das Problem ist die enorme Speichermenge, die für den Vorgang benötigt wird. Sie nehmen einige GigaBytes, also könnte die Lösung darin bestehen, einen Stream zu verwenden und die Datei in Blöcken zu verarbeiten.

Oder die beste Option wäre, eine Third-Party-Bibliothek dafür zu verwenden. Unten sind einige für .Net

  

AForge

     

Image Resizer

Sehen Sie sich auch diese SO-Frage an.

Ссылка

    
Shekhar_Pro 11.07.2011 09:19
quelle
0

Es hängt von Ihren anwendungsspezifischen Anforderungen ab, es ist nicht sehr klar von Ihrer Post, aber generell, mit großen Mediendateien (Bilder, Sounds, Videos) arbeiten Ich denke, eine wirklich gute Lösung ist

speicherzugeordnete Dateien

Speichern Sie Ihr Bild auf der Festplatte in einer Memory-Mapped-Datei und ändern Sie die Größe auf der Festplatte, indem Sie so viel RAM wie möglich von vielen Daten, die Sie wahrscheinlich nicht benötigen, um einen schnellen Zugriff zu haben Moment mindestens)

Hoffe, das hilft. Grüße.

    
Tigran 11.07.2011 09:12
quelle

Tags und Links