Effizienz der Verwendung von PNGs gegen BMPs mit großen Dateien

8

Ich habe ein Mapping-Programm in Delphi geschrieben, wo der Benutzer ein Rasterbild im Hintergrund laden kann, das ich im Speicher ablege. In einem Fall hat der Benutzer eine 44MB BMP erfolgreich geladen, aber das Programm war träge und als sie gedruckt wurden (ich habe die Ausgabe gekachelt), kam es zu einem Out of Resources Fehler. Ich konvertierte das BMP in ein PNG (3MB) und das Programm führt viel besser aus und der Druckauftrag war erfolgreich.

Da das PNG auf eine DIB der gleichen Größe erweitert werden muss, warum gibt es dann einen Unterschied zwischen Leistung und Ressourcen? Wenn es etwas mehr Arbeits-und Speicherzuweisungen benötigt, um das PNG zu laden. Was vermisse ich?

Da es keine offensichtlichen Antworten zu geben scheint, werde ich ein kleines Demo-Projekt schreiben, damit ich das weiter erforschen kann.

    
Mitch 05.04.2012, 16:53
quelle

1 Antwort

1

Der Unterschied ist die Komprimierung.

BMP = Rohdaten wie sie sind PNG = gleiche Rohdaten mit "verlustfreier" Komprimierung

Dies hat mehr als eine Möglichkeit, Kreise zu programmieren ...

  1. Das Laden des Bildes führt dazu, dass weniger Rohdaten in den RAM geladen werden.
  2. Sie verarbeiten dann weniger rohe Daten, so dass Sie weniger Ressourcen benötigen.

Tiling bedeutet, dass das Problem für Sie zum Beispiel exponentiell ist ...

44 MB x 10 Kacheln = 440 MB

Vs

3 MB x 10 Kacheln = 30 MB

Drucker mögen es nicht, riesige Datenmengen zu verarbeiten, und alle, außer den teureren Druckern, neigen dazu, das ganze Dokument auf einmal zu drucken (z. B. den gesamten Datenstrom zu puffern).

So sagt der Benutzer von Ihrer App "Drucken" ... Ihr Code sagt dann "richtig, ich werde 10 Kopien davon senden" und der Drucker beginnt "caching" 440 MB Rohdaten.

Die gängigsten Heimdrucker sind darauf angewiesen, dass der Computer das Zwischenspeichern durchführt und druckt, was sie erhalten, aber ein Standard-Bürodrucker führt das Zwischenspeichern aus und druckt dann das Dokument.

Allerdings ... ich denke, das ist eine optionale Sache, die Sie optimieren können (ich denke, es variiert jedoch von Drucker zu Drucker).

BEARBEITEN:

hat etwas aus der Welt der Spieleprogrammierung:

Ссылка

    
War 12.04.2012 13:35
quelle

Tags und Links