Sehr große bitmap darstellen



  • Hey, danke für deine sehr gute Idee!

    Welches Dateiformat würdest du für die Bilder nehmen?
    Sollte ja möglichst gut komprimieren und sich trotzdem schnell dekomprimieren lassen (jaja, ich meine ja nur im Idealfall ;))



  • Bitmap schrieb:

    Welches Dateiformat würdest du für die Bilder nehmen?
    Sollte ja möglichst gut komprimieren und sich trotzdem schnell dekomprimieren lassen (jaja, ich meine ja nur im Idealfall ;))

    Uff.
    Verlustfrei oder darf's auch verlustbehaftet sein?
    Verlustbehaftet würd ich mal JPEG sagen.

    Verlustfrei kannst du PNG probieren. Wobei ich nicht sicher bin wie aufwendig das Dekomprimieren von PNG Files ist. Könnte sein dass das zu sehr bremst.

    => Ausprobieren.



  • Bitmap schrieb:

    Welches Dateiformat würdest du für die Bilder nehmen?

    hustbaers tiling und mipmapping ist da total tolerant. (hab ihn hoffentlich recht interpretiert, daß er für jede Kachel und Mipmap eine eigene Datei nimmst.)

    Egal. jpeg für Fotos, png für Karten mit vielen gleichen Pixels. Kannst sogar jede Datei in einem anderen Format speichern, welches gerade für diesen Kartenausschnitt am stärksten komprimiert.

    mipmapping, riesige Datei…
    hmm…
    wavelets!
    Wenn ich auf jenem Forentreffen Marc++us richtig verstanden habe (nicht wirklich) und mich recht erinnere (nicht wirklich) sollte ein wavelet-komprimiertes Bild keine Randartefakte zwischen den Kacheln haben und alle Zoom-Stufen bereits schnell zugreifbar beinhalten.



  • Bitmap schrieb:

    Welches Dateiformat würdest du für die Bilder nehmen?

    Wenn's was Eigenes sein kann, dann was Eigenes, sonst TIFF, das kann sowohl Kompression als auch Tiling...



  • hustbaer schrieb:

    Verlustfrei kannst du PNG probieren. Wobei ich nicht sicher bin wie aufwendig das Dekomprimieren von PNG Files ist. Könnte sein dass das zu sehr bremst.

    png ist eigentlich nur gzip nach einem trivialen vergleich des pixels mit dem pixel eins oberhalb(1). das sollte rasend schnell sein.

    (1) Ok, geschummelt. Aber das ändert die Laufzeit nicht:
    http://de.wikipedia.org/wiki/Portable_Network_Graphics#Vorfilter



  • dot schrieb:

    Bitmap schrieb:

    Welches Dateiformat würdest du für die Bilder nehmen?

    Wenn's was Eigenes sein kann, dann was Eigenes, sonst TIFF, das kann sowohl Kompression als auch Tiling...

    Die Frage ist, ob man Libs hat, um Ausschnitte schnell zu extrahieren. jpeg2000 sollte echt auch einen versuch wert sein.



  • Ja, ich würde für jede Kachel ne eigene Datei nehmen.

    EDIT: Was die Mip-Maps angeht: die würde ich jeweils als eigenes gekacheltes Bild abspeichern. Wobei jedes Mip Level dann weniger Kacheln hat als das nächst grössere Level. D.h. eine Kachel von Mip Level 1 entspricht 4 Kacheln von Mip-Level 0. Bei 1:1 Kachelung müsste man sonst nämlich für die ganz rausgezoomte Ansicht wieder unmengen an fuzzikleinen Files laden.

    volkard schrieb:

    Wenn ich auf jenem Forentreffen Marc++us richtig verstanden habe (nicht wirklich) und mich recht erinnere (nicht wirklich) sollte ein wavelet-komprimiertes Bild keine Randartefakte zwischen den Kacheln haben und alle Zoom-Stufen bereits schnell zugreifbar beinhalten.

    Ich schätze mit Wavelets sollte es möglich sein alles in einer einzigen Datei zu speichern, und effizient daraus zu laden - egal welche Zoomstufe. Wenn man das File-Format entsprechend optimiert.
    Ich vermute aber dass man da wenig fertigen Code verwenden wird können, und alles selbst implementieren muss. Wäre mir zu aufwendig.

    Wäre es mein Projekt, dann würde ich vermutlich die von mir beschriebene Variante umsetzen. Ganz einfach weil ich weiss dass es funktionieren wird, und dass ich es in relativ kurzer Zeit implementieren könnte.



  • volkard schrieb:

    dot schrieb:

    Bitmap schrieb:

    Welches Dateiformat würdest du für die Bilder nehmen?

    Wenn's was Eigenes sein kann, dann was Eigenes, sonst TIFF, das kann sowohl Kompression als auch Tiling...

    Die Frage ist, ob man Libs hat, um Ausschnitte schnell zu extrahieren. jpeg2000 sollte echt auch einen versuch wert sein.

    Stimmt, mit jpeg und jpeg2000 sollte das rein prinzipiell auch gehen...



  • dot schrieb:

    Stimmt, mit jpeg und jpeg2000 sollte das rein prinzipiell auch gehen...

    Ich meine explizit jpeg2000, weils wavelets drin hat. ich hab aber ein sehr ungutes gefühl, ob es genau passt, oder ob z.B. das layout im file cachunfreundlich ist oder so, was hustbaers lösung 1000-mal schneller machen würde (ebenso bei riesen-gif). und hustbaers ist so witzig schnell implementiert.



  • hustbaer schrieb:

    D.h. eine Kachel von Mip Level 1 entspricht 4 Kacheln von Mip-Level 0.

    Jo. Noch schnell image-magick installieren und ein kleines C++-Programm drum, das es paarhundertmal aufruft aus der Riesenkarte die die Kacheln jeder Zoom-Stufe (ich unterscheide jetzt mal nichtmehr zwischen Kacheln und Mipmaps) baut und fertig ist der Lack.
    Aus Jux noch alle Kacheln in ein paar übliche Formate konvertieren lassen und immer die kleinste nehmen, 5 Minuten mehraufwand, googlen, wie man in C++ die Dateigröße rausfindet.
    Aus Jux noch falls png oft auftaucht, OptiPNG, TinyPNG oder so benutzen, 2-3 Stunden mit erstem Rumexperimentieren. Hab damit oft noch bis zu 50% rausgeholt.



  • Hey, danke euch für die vielen und sehr guten/ausführlichen Antworten!

    Ich denke damit kann ich gut arbeiten, ihr habt mir sehr geholfen 👍

    Danke und schöne Grüße!


Anmelden zum Antworten