Forum: PC-Programmierung Maximale Auflösung bei 1MB Bild


von Mampf (Gast)


Lesenswert?

Guten Morgen,

hat jemand eine Idee, wie die maximale Auflösung eines (nicht-korrupten) 
Bildes (Bildinhalt egal, irgendein gängiges Bildformat, kein 
Vektor-Format wie SVG) sein kann, das eine maximale Dateigröße von 1MB 
hat?

zB. Könnten Bildformate, die RLE verwenden (PCX, BMP) wahrscheinlich 
recht gute Auflösung erreichen, ich weiß es aber nicht genau ...

Hat jemand eine Idee?

Grüße,
Mampf

von Stawito (Gast)


Lesenswert?

Ein leeres Gif Bild 65536x65536 Pixel kann man unter 0.1kB anlegen.

von Peter II (Gast)


Lesenswert?

Mampf schrieb:
> hat jemand eine Idee, wie die maximale Auflösung eines (nicht-korrupten)
> Bildes (Bildinhalt egal, irgendein gängiges Bildformat, kein
> Vektor-Format wie SVG) sein kann, das eine maximale Dateigröße von 1MB
> hat?
wird wohl auf unentlich rauslaufen. TIFF mit Fax4 verwendet RLE. Wenn 
das bild komplett weiss oder schwarz ist ist die Auflösung nur durch die 
Datentypen in er Datei begrenzt.

von Floh (Gast)


Lesenswert?

Kommt aufs Format drauf an.
Unkomprimiert bekommst du die Pixelanzahl über
(Dateigröße-Overhead) / Farbtiefe

Bei komprimierten Formaten (z.B. JPG) kommt es ganz auf die 
Komprimierungsstufe an.

von Mampf (Gast)


Lesenswert?

Stawito schrieb:
> Ein leeres Gif Bild 65536x65536 Pixel kann man unter 0.1kB anlegen.

Ist es aber dann auch gültig?

Der Huffmann-Decoder wird ja merken, wenn Bilddaten fehlen ... selbst, 
wenn der Encoder jedes Pixel mit 1Bit kodiert wird, wird die Datenmenge 
>0,1kB sein ... Ich weiß spontan garnicht, ob GIF Lauflängenkodierung 
kann ...

von Daniel F. (df311)


Lesenswert?

meinst du wirklich auflösung (dpi) oder eher bildgröße (pixel, punkt, 
cm, ...)?

von Christian B. (casandro)


Lesenswert?

Mampf schrieb:

> Ist es aber dann auch gültig?
>
> Der Huffmann-Decoder wird ja merken, wenn Bilddaten fehlen ... selbst,

Also Bilder werden in der Regel nicht mit Huffmann kodiert. Da wird in 
der Regel was mit "Lauflängen" gemacht. GIF benutzt ganz konkret LZW, 
welches wiederkehrende Pixelfolgen in einzelne Symbole übersetzt.

Somit kommst Du auch bei Bildern weit unter einem Bit pro Pixel wenn Du 
einfarbige Bilder hast. Bei 16 Farben RLE BMPs bekommst Du bei Farbe x 
pro 16 Pixel ein Byte. Macht ein halbes Bit pro Pixel. Bei 256 Farben 
RLE kannst Du sogar 256 gleichfarbige Pixel pro 2 Bytes übertragen. Das 
macht 1/16tel Bit pro Pixel.

von Mampf (Gast)


Lesenswert?

Schonmal danke für eure Antworten ...

Der Grund wieso ich frage ... Ich arbeite an einer Web-Plattform, die 
den Upload von Bildern ermöglicht.

Im Backend arbeitet Java, das per HTTPServlet das Bild empfängt.

Meine Sorge ist, dass man das Exploiten kann ... 1MB Bild, aber 
Dimensionen zB 64k*64k. Wenn Java versuchen würde, ein solches Bild zB 
zu verkleinern, müsste es dieses ja erstmal dekomprimieren.

Ich frag mich, ob man so eine komplette VM (inkl Tomcat) abschießen 
könnte ...

von Sven P. (Gast)


Lesenswert?

Nun, du kannst ja auch erstmal in den Header reingucken, wie groß es 
denn sein wird. Die Upload-Größe ist ja ohnehin beschränkt. Entweder 
steht nun im Header was Brauchbares drin, also eine realistische Größe. 
Dann kannst du ruhig dekomprimieren und so weiter.
Oder da steht schon Unfug drin, dann hat sich das Thema doch erledigt.

von Harald Wilhelms (Gast)


Lesenswert?

Stawito schrieb:
> Ein leeres Gif Bild 65536x65536 Pixel kann man unter 0.1kB anlegen.

Und wie wäre die Dateigrösse, wenn man in der Mitte des 65536x65536
Bildes einen einzelnen schwarzen Punkt hätte?
Gruss
Harald

von Christian B. (casandro)


Lesenswert?

Mampf schrieb:

> Ich frag mich, ob man so eine komplette VM (inkl Tomcat) abschießen
> könnte ...

Ich denke mal, wenn Du so was verwendest, dann sind die bis zu 12 
Gigabyte die solch ein Bild maximal an Speicher brauchen könnte, auch 
egal. :)

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Wie wär's mit

http://www.imagemagick.org/ → "Image identification"

ImageMagick hat auch ne Java-API: JMagick

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Mampf schrieb:
> Meine Sorge ist, dass man das Exploiten kann ... 1MB Bild, aber
> Dimensionen zB 64k*64k. Wenn Java versuchen würde, ein solches Bild zB
> zu verkleinern, müsste es dieses ja erstmal dekomprimieren.

Erstmal wird Java versuchen entsprechend Speicher zu reservieren, dies 
wird fehlschlagen und der Betrieb geht bei passender Fehlerbehandlung 
ganz normal weiter...

von Εrnst B. (ernst)


Lesenswert?

Die JPEG-Lib (referenzimpl) hat IIRC ne API-Funktion, um ein JPEG gleich 
von Anfang an in einer niedrigeren Auflösung zu dekomprimieren, damit 
kriegt man die Megapixel-Monster auch ohne Gigabytes an Ram gelesen.

Wenn das nicht reicht, oder schlechte Qualität liefert: JPEG kann auch 
Zeilenweise (Zeilenblockweise) dekomprimieren, dann reichen dir z.B. 32 
Zeilen des Bildes auf einmal im Ram, und du kannst troztdem bikubisch 
interpolieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.