Heim >Java >javaLernprogramm >Wie erreicht man mit ImageIO eine explizite Komprimierungsstufensteuerung für JPEG-Bilder?
Beim Speichern von Bildern als JPEGs mit ImageIO möchte man häufig die Komprimierungsstufe anpassen, um das Gleichgewicht zwischen der Bildqualität zu steuern und Dateigröße. Der standardmäßigen ImageIO-Funktionalität fehlt diese Option jedoch.
Um die Komprimierungsstufe explizit festzulegen, müssen wir tiefer in die ImageIO-API eintauchen. Die Verwendung von ImageIO.getImageWritersByFormatName("jpg").next() ermöglicht den Zugriff auf einen ImageWriter, der es uns ermöglicht, bestimmte Parameter für das JPEG-Format zu ändern.
Die ImageWriteParam-Klasse bietet Kontrolle über die Komprimierungseinstellungen. Durch Festlegen von ImageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT) ermöglichen wir die explizite Einstellung der Komprimierungsstufe.
Um die Komprimierungsstufe anzugeben, verwenden Sie ImageWriteParam.setCompressionQuality(0.7f) (wobei 0,7f eine gewünschte Komprimierungsstufe darstellt). Ein Wert näher an 1,0 weist auf eine höhere Qualität und eine geringere Komprimierung hin, während ein Wert näher an 0,0 einer geringeren Qualität und einer höheren Komprimierung entspricht.
Die ImageWriter.setOutput()-Methode erfordert einen ImageOutputStream, der es uns ermöglicht, die Bilder zu steuern Ziel. Verwenden Sie entweder FileImageOutputStream für die Dateiausgabe oder MemoryCacheImageOutputStream für die Ausgabe in einen Speicherpuffer.
Um das geänderte JPEG zu speichern, verwenden Sie jpgWriter.write(null, OutputImage, jpgWriteParam), wobei OutputImage ein IIOImage ist, das die Bilddaten und jpgWriteParam enthält sind die zuvor konfigurierten Komprimierungseinstellungen.
Dieser Ansatz bietet eine detaillierte Kontrolle über die JPEG-Komprimierungsstufen, sodass Sie die Bildqualität und Dateigröße für Ihre spezifischen Anforderungen optimieren können.
Das obige ist der detaillierte Inhalt vonWie erreicht man mit ImageIO eine explizite Komprimierungsstufensteuerung für JPEG-Bilder?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!