2010-11-05 8 views
9

Gibt es ein Dateiformat-Limit für die PNG-Pixelgröße?Dateiformat Grenzen in Pixelgröße für PNG-Bilder?

Ich versuche, ein 30.000x30.000 Pixel PNG-Bild mit Firefox zu visualisieren, aber ich bekomme einen Fehler. Das Bild wird in Preview.app korrekt geöffnet, allerdings sehr langsam. Die Dateigröße ist nicht groß, nur etwa 3 MiB (1 Bit schwarz/weißes Bild). Ich frage mich, ob es dafür einen technischen Dateiformat-Grund gibt.

+1

Hmm, beschränken auf PNG - Computer bezogen. Beschränke auf PNG in Firefox - Superuser. – Will

+0

@Will ich denke, es ist Computer verwandt. Ich würde gerne wissen, ob es im Dateiformat zuerst ein Limit gibt. Jetzt kann ich das selbst überprüfen, aber da es keine solche Frage gibt und ich ein guter Typ bin, frage ich und füge ein bisschen mehr Wissen zu SO hinzu. Es könnte sagen, der Standard ist ein Limit 16K x 16K. Ich bekomme den Fehler, weil Firefox es respektiert und Preview.app nicht. –

+0

das erste ist definitiv, das zweite ist eine SuperUser-Frage ... Keine Sorge, ich habe nicht abgestimmt, um zu schließen! – Will

Antwort

11

Eine naive Implementierung zu 2,7 GB groß werden, um das Bild würde erfordern, Ändern der Größe, die Luft gesprengt, bevor es angezeigt wird. Dies wäre eindeutig zu groß für ein normales 32-Bit-Programm.

Die PNG-Spezifikation scheint der Breite und Höhe eines Bildes keine Grenzen zu setzen; Dies sind 4 Byte vorzeichenlose Ganzzahlen, die bis zu 4294967295 sein können. http://www.libpng.org/pub/png/spec/iso/index-object.html#11IHDR

+18

Tatsächlich ist Ihre Aussage über Bildgrößenbeschränkungen falsch. PNG verwendet technisch 32-Bit-Ganzzahlen ohne Vorzeichen nicht; Es verwendet vorzeichenlose 31-Bit-Ganzzahlen, die mit einem zusätzlichen Null-Bit aufgefüllt sind. Dies wurde gemacht, um Sprachen unterzubringen, die keine vorzeichenlosen Integertypen haben. Die obere Grenze für die Bildbreite oder -höhe ist somit 2^31-1 oder 2.147.483.647. –

+0

Meine Tests unter Windows zeigen, dass FFox die DIB-API verwendet, die eine maximale Größe von 4096 x 4096 hat. Dies kann sich mit Windows 10 geändert haben - aber der Moment, in dem Sie über diesen Browser hinausgehen, scheitert. Einige können unter Windows arbeiten, scheitern aber unter Linux usw. –

+0

@JonLennartAasenden, das sollte eine Antwort sein, kein Kommentar. Es ist gut für Sie, zwischen der durch die Spezifikation auferlegten Grenze und praktischen Grenzen zu unterscheiden. –

2

Das ist ein seltsames Bild, aber ich bin mir sicher, dass es einen Grund gibt, so ein riesiges Bild zu haben.

Ich kann die Größenbeschränkung nicht wirklich ansprechen, aber ich kann einen Weg finden, um es zu umgehen. Erstellen Sie einen Satz von Kacheln mit einer bestimmten Größe und bringen Sie dann beim Durchblättern des Elements Kacheln mithilfe von CSS in die Ansicht, um sie korrekt zu positionieren. Es könnte sogar sein, dass du mit einem Haufen kleinerer Bilder davon kommst, alle Kacheln gleichzeitig aufzustellen.

Aber ich bin neugierig, was ist die Anwendung, die ein so großes Bild benötigt, ohne zu skalieren?

Erick

+0

ok, aber sagt der Standard (de facto oder de jure)? –

+0

Ich rendere den mandelbrot Parameterraum, siehe mein Blog. Dauerte 10 Tage der Berechnung. –

+0

@Stefano: Der Standard besagt, Größe ist 32 Bit vorzeichenlose ganze Zahl, so dass die theoretische Grenze wäre etwa 4 Milliarden Pixel (neun Nullen) x und y. Wie von Mark Ransom erwähnt, würde eine einfache Implementierung von PNG fast 3GB benötigen, um Ihr 30k mal 30k Pixel Bild zu rendern. Firefox hat wahrscheinlich Fehler gemacht, wenn es nicht genug Speicher reservieren konnte, aber ich bin nicht wirklich sicher, da ich nicht genau weiß, wie Firefox PNGs rendert. – slebetman