große jpeg verarbeiten

B

bone2

Gast
gibt es eine möglichkeit große jpegs (3stellige megapixel) zu verarbeiten (verkleinern) ohne out of memory zu kommen?

mehr als 1 gb bekommt die vm nicht, auf dem pc auf der converter läuft.

hatte an ausschnittsweises laden gedacht oder direkt nur durchstreamen, aber bin auch mit google noch auf keine lösung gekommen.
meine vermutung ist jetzt natürlich, das man auf grund der art wie jpeg komprimiert werden, unmöglich teile laden kann, ohne das gesamtbild zu kennen

ein anderer ansatz, den ich gefunden habe, war das jpegs anschienend aus 4 ebenen entstehen (rgb + helligkeit), die einzeln zu laden habe ich allerdings auch nirgends gefunden.
 

Evil-Devil

Top Contributor
Wenn ich das auf Wikipedia richtig lese, dann wird ein JPG immer in Blöcken von zb. 8x8 Pixeln abgespeichert. Allerdings ist es imho eine Farce ein JPG im dreistelligen Megapixel Bereich mit nur 1GB Speicher bearbeiten zu wollen. Wenn man bedenkt das Photoshop bereits als absolutes Arbeitsminimum 2GB erfordert und man 4, 8 oder gar 16GB als Grafiker zur Verfügung gestellt bekommt sofern es die Arbeit erfordert.

Wenn ich mich gerade nicht verrechnet habe, dann benötigt ein Bild das aus 1 Million Pixeln in Höhe und Breite bei 24bit (8Bit pro Farbkanal) läppische 2,728 Terabyte an Rohdatenspeicher.

Bist du sicher das deine Bilder im dreistelligen Megapixel Bereich liegen? Bzw. welche Ausmaße haben die Bilder und wie viel dpi?
 

AquaBall

Top Contributor
Ich weiß nicht genau wo mein Fehler liegt,
aber ein normales 5MegaPixelBild benötigt als durchschnittlich komprimiertes JPG ca 1 MeagByte.
mit 100facher Größe ergeben dann 500MPx ca 100MB.
Da sollte doch genügend Platz sein.

Bei RAW-Daten säh's natürlich ganz anders aus, aber offensichtlich liegt eh ein JPG vor.

Natürlich ist einfacher, wenn die blockweise eingelesen werden können.
Aber da weiß ich nichts drüber.
 

Evil-Devil

Top Contributor
Also ausgehend von 18k*18k*3 hättest du ~926MB an Pixelrohdaten. Die passen in 1GB rein rechnerisch hinein ;)

Und RAM kriegt man hinterher geworfen...
Ich würde ehrlich anstatt lange auf eine evtl. aufwändige/kostenspielige Programmierung liebe ~20€ für ein paar GB RAM in die Hand nehmen und selbigen kaufen.

[edit]
@Aquaball: Afaik liegt ein Bild nachdem es geladen wurde immer als RAW im Speicher ;)
[/edit]
 

HimBromBeere

Top Contributor
Ich bilde mir ein, JPEG kennt auch sowas wie Pyramiden (oder war das nur im TIFF?). Vlcht, helfen die dir auch schon... Das sind kleine Mini-Bilder (sowas ähnliches wie die "Fingernägel") mit geringerer Auflösung.
 
B

bone2

Gast
hm nachdem es einmal erledigt war, kann man nicht mehr editieren?!

Code:
param.setSourceSubsampling(x, y, 0, 0)
erledigt den trick auch unter java, 324 Mpixel Bild mit nur 70MB ram verkleinert

Java:
    public static void main(String[] args) throws IOException {
        Iterator readers = ImageIO.getImageReadersByFormatName("jpeg");
        ImageReader reader = (ImageReader)readers.next();

        ImageInputStream iis = ImageIO.createImageInputStream(new File("e:/temp/583001.jpg"));
        reader.setInput(iis, true);
        ImageReadParam param = reader.getDefaultReadParam();
        int imageIndex = 0;
        int half_width = reader.getWidth(imageIndex);
        int half_height = reader.getHeight(imageIndex);

        int sampling = half_width / (512*2);
        System.out.println(sampling);
        param.setSourceSubsampling(sampling, sampling, 0, 0);
        BufferedImage bi = reader.read(imageIndex, param);

        Image img = bi.getScaledInstance(512, 512, Image.SCALE_SMOOTH);

        bi = new BufferedImage(512, 512, BufferedImage.TYPE_INT_RGB);
        Graphics g = bi.getGraphics();
        g.drawImage(img, 0, 0, null);
        g.dispose();


        writeImageToJPG(new File("b.jpg"), bi);
    }


    public static void writeImageToJPG (File file,BufferedImage bufferedImage)
       throws IOException {
        Iterator iter = ImageIO.getImageWritersByFormatName("jpeg");
        ImageWriter writer = (ImageWriter)iter.next();
        // instantiate an ImageWriteParam object with default compression options
        ImageWriteParam iwp = writer.getDefaultWriteParam();

        iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
        iwp.setCompressionQuality(1);   // an integer between 0 and 1
        // 1 specifies minimum compression and maximum quality


        FileImageOutputStream output = new FileImageOutputStream(file);
        writer.setOutput(output);
        IIOImage image = new IIOImage(bufferedImage, null, null);
        writer.write(null, image, iwp);
        writer.dispose();
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Arbeitsfeld in gleich große Bereiche einteilen Java Basics - Anfänger-Themen 2
G Best Practice Wie große "Tabellen" effizient durchsuchen und Daten händeln? Java Basics - Anfänger-Themen 15
C Große Zahlen vergleichen Java Basics - Anfänger-Themen 19
S 4 große Textdateien zu einer Mergen Java Basics - Anfänger-Themen 5
K Große Datenliste Java Basics - Anfänger-Themen 2
E Große Datenmengen effizient in CSV File speichern Java Basics - Anfänger-Themen 4
1 Extrem große Variable Java Basics - Anfänger-Themen 1
S Best Practice MVC und große Datenmengen aus einer mySQL - Datenbank Java Basics - Anfänger-Themen 24
M Mergesort Aufgabe große Probleme Java Basics - Anfänger-Themen 9
P Schneller Quadratzahltest für beliebig große natürliche Zahlen Java Basics - Anfänger-Themen 2
T Scanner für große Textdatei Java Basics - Anfänger-Themen 11
N Input/Output Große Dateien schnell Speichern/auslesen Java Basics - Anfänger-Themen 16
K Große Gleitkommazahlen runden Java Basics - Anfänger-Themen 8
X Compiler-Fehler javac - 08 eine zu große int? Java Basics - Anfänger-Themen 11
turmaline String teilen in gleich große strings Java Basics - Anfänger-Themen 15
F Große Potenzen berechnen Java Basics - Anfänger-Themen 6
J Große .txt einlesen - Idee? Java Basics - Anfänger-Themen 16
E Datentypen Große Zahl erzeugen Java Basics - Anfänger-Themen 5
P Kleines Projekt -> Große Überlegungen Java Basics - Anfänger-Themen 2
F Große Daten und große Array Java Basics - Anfänger-Themen 21
O Performant große Dateien durchsuchen Java Basics - Anfänger-Themen 8
J Große animierte Gif preloaden und solange mit einer nicht animierten ersetzen Java Basics - Anfänger-Themen 5
Povlsen84 Datentypen Große, sortierte, schnelle Datenstruktur Java Basics - Anfänger-Themen 9
H Große Projekte mit Java - Ausführbare Datei Java Basics - Anfänger-Themen 2
K Eclipse EMF und das große HÄ? Java Basics - Anfänger-Themen 5
T .split(";") nicht gleich große arrays werden erzeu Java Basics - Anfänger-Themen 2
G String aus Zahlen multiplizieren -> unendlich große ! Java Basics - Anfänger-Themen 13
M Spielt der Debugger bei java eine große Rolle Java Basics - Anfänger-Themen 3
C große Matrizen, Performance, (Pointer?) Java Basics - Anfänger-Themen 6
L JTextArea große setzen Java Basics - Anfänger-Themen 5
S große probleme mit java Java Basics - Anfänger-Themen 6
R große Datenmenge in Datei schreiben Java Basics - Anfänger-Themen 8
M FileOutputStream und zu große Zahlen! Java Basics - Anfänger-Themen 10
J Große *.Text Datei zum verschicken in viele kleine Java Basics - Anfänger-Themen 7
B Probleme große Strings zu schreiben Java Basics - Anfänger-Themen 2
A große errechnete datenmengen sofort in datei schreiben? Java Basics - Anfänger-Themen 6
S Große Text dateien einbinden Java Basics - Anfänger-Themen 3
R große Zahlen Java Basics - Anfänger-Themen 4
R Große Zahlen Java Basics - Anfänger-Themen 3
T Große Zahlen aufgesplittet in verketteter Liste speichern Java Basics - Anfänger-Themen 4
N Große Probleme mit StingBuffer und Array Java Basics - Anfänger-Themen 2
T jpeg Bilder zoomen.. Java Basics - Anfänger-Themen 2
H Erste Schritte Von jpg zu jpeg // reguläre Ausdrücke Java Basics - Anfänger-Themen 3
S Jpeg-bILD Java Basics - Anfänger-Themen 19
S jpeg bzw bufferedimage als PDF Speichern Java Basics - Anfänger-Themen 13
A JPEG anzeigen Java Basics - Anfänger-Themen 3
S jpeg Bild anzeigen java Java Basics - Anfänger-Themen 3
D File(jpeg) größe ändern und dann zu einen byte[] Java Basics - Anfänger-Themen 7
K Wohin gehört in Eclipse ein jpeg-Bild ? Java Basics - Anfänger-Themen 4
T JApplet JPEG einbinden geht nur "offline" Java Basics - Anfänger-Themen 6
G JPEG aus Blob als ImageIcon anzeigen Java Basics - Anfänger-Themen 5
C java, jpeg, animiert Java Basics - Anfänger-Themen 9
G JPEG einlesen Java Basics - Anfänger-Themen 7
N html in jpeg umwandeln Java Basics - Anfänger-Themen 6
D BMP in JPEG konvertieren Java Basics - Anfänger-Themen 2
S tif in jpeg Java Basics - Anfänger-Themen 5
B ImageIcon komprimieren (zB Jpeg) Java Basics - Anfänger-Themen 14
M jpeg in ein Frame zaubern Java Basics - Anfänger-Themen 10
A JPEG mit ins JAR-Archiv Java Basics - Anfänger-Themen 3
T 3D Objekte verarbeiten Java Basics - Anfänger-Themen 2
A CSV-Datei Verarbeiten Java Basics - Anfänger-Themen 8
D Events verarbeiten Java Basics - Anfänger-Themen 1
J CSV-Datei verarbeiten Java Basics - Anfänger-Themen 27
A Verarbeiten einer Excel Datei durch das java-Programm Java Basics - Anfänger-Themen 3
S Datein auslesen und verarbeiten Java Basics - Anfänger-Themen 1
R txt Einlesen und Verarbeiten Java Basics - Anfänger-Themen 15
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
G csv datei verarbeiten Java Basics - Anfänger-Themen 18
Z Textdateien einlesen und verarbeiten Java Basics - Anfänger-Themen 3
V Excel Datei einlesen und verarbeiten Java Basics - Anfänger-Themen 4
J CSV Datei einlesen und verarbeiten Java Basics - Anfänger-Themen 10
A Auslesen, verarbeiten und ausgeben Java Basics - Anfänger-Themen 22
H Daten einlesen und verarbeiten Java Basics - Anfänger-Themen 4
M Datentypen Strings nach Muster auslesen und verarbeiten Java Basics - Anfänger-Themen 5
D CSV Datei einlesen und verarbeiten Java Basics - Anfänger-Themen 23
N Fragen zu String durchsuchen und verarbeiten Java Basics - Anfänger-Themen 23
D Eingelesene Datei verarbeiten Java Basics - Anfänger-Themen 11
R Daten aus Datenbank lesen, verarbeiten und schreiben. Java Basics - Anfänger-Themen 1
C Problem mit Lesen und Speichern und Verarbeiten von großen Text Dateien Java Basics - Anfänger-Themen 5
G Gleichzeitiges Verarbeiten von Variablen 2er Obj. selber Kl. Java Basics - Anfänger-Themen 5
S utf-8 codierte Strings verarbeiten Java Basics - Anfänger-Themen 2
X mehrere Dateien lesen/verarbeiten Java Basics - Anfänger-Themen 3
A Textfile verarbeiten. Java Basics - Anfänger-Themen 15
G setValueAt Rückgabewert verarbeiten? Java Basics - Anfänger-Themen 12
M Letzte Zeille einer Datei verarbeiten Java Basics - Anfänger-Themen 3
T longs binär verarbeiten Java Basics - Anfänger-Themen 4
G dateien verarbeiten Java Basics - Anfänger-Themen 7
zilti String verarbeiten Java Basics - Anfänger-Themen 4
M HTML Seite die Daten in JavaApplet dynamisch verarbeiten Java Basics - Anfänger-Themen 2
G Gleiche Aktionen verarbeiten (aber nur einmal Code)? Java Basics - Anfänger-Themen 2
T Bei Struts Beans updaten ohne ein Request zu verarbeiten Java Basics - Anfänger-Themen 4
M Daten eingeben und verarbeiten Java Basics - Anfänger-Themen 8
C Html-Seite aus dem Internet verarbeiten Java Basics - Anfänger-Themen 10
G Dateiliste verarbeiten Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben