Programmatisch Verringerung der JPEG-Datei-Größe
Entschuldigen für die Unwissenheit, aber ich war noch nie mit jpeg-Bilder (geschweige denn irgendwelche Arten von Bildern) in Java vor.
Angenommen, ich will zu schicken, um ein jpeg-Bild von einem web service client. Gibt es eine Möglichkeit, dass ich reduzieren kann die jpeg-Dateigröße durch die Manipulation mit dem Farbprofil des Bildes in irgendeiner Weise?
Habe ich bereits in der Lage, reduzieren Sie die Größe des Bildes durch Skalierung mit einem praktischen Werkzeug für BufferedImages genannt imgscalr
. Sehen hier.
Ich würde auch gerne ein jpeg weniger Farben als hochwertige jpeg-Bild. Zum Beispiel, ich möchte in der Lage sein zu verwenden, 8bit Farbe in meine jpeg anstatt zu sagen, 16bit Farbe.
Was genau müsste ich ändern, wenn ich ein BufferedImage von der Java-2D-Paket?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer anderen Weise zu reduzieren, Bild-Größe ändern-Komprimierung Ebene. Sie können tun, dass mit ImageWriter.
Der einfachste Weg, dies zu tun ist, um Dekomprimieren Sie die byte-stream in ein Java-Image, Optional auch die Größe ändern (das macht es noch kleiner machen) und dann neu erstellen Sie ein JPEG-Bild aus dieser mit die gewünschte Einstellung für die Qualität.
Dieses neue Bild ist, was ist dann an den client gesendet.
Haben Sie einen Blick auf die
ImageIO
Klasse. Wie für die Verringerung der Datei-Größe: da das Bild bereits ein JPEG nur Dinge, die Sie tun können, reduzieren Sie die Qualität oder die Größe des Bildes.Andere Sache im Auge zu behalten: wenn das Bild ein CMYK-jpeg, es könnte größer sein. Leider
ImageIO
nicht umgehen kann, aber Sie können versuchenJAI ImageIO
zum konvertieren von CMYK-zu-RGB (die sollten viel kleiner sein).Zwei der möglichen Lösungen sind Hardware-Herunterskalierung in Echtzeit das Bild, hier ist, wie Sie es tun würde:
Offensichtlich haben Sie berechnen die skalierte Breite und Höhe, also das Bild bleibt durch die gleiche Seitenverhältnis.
Sobald Sie gezeichnet haben es kleiner ist, können Sie nun drehen Sie das Bild in eine JPEG-Datei:
Diese Klassen sind von der JAI - Paket (genauer com.sun.image.codec.jpeg) und die JVM könnte sich darüber beschweren, dass Sie sollten nicht direkt verwendet werden, aber Sie können Sie ignorieren.
Können Sie möglicherweise download JAI aus hier, wenn es nicht funktioniert, ich habe github Spiegel setup für die beiden Bibliotheken, JAI core und JAI ImageIO.