Hallo,
Ich bin gerade am ImageWriter und habe ein Programm das Bilder verkleinert und die Quality runter schraubt. um die quality von dem Bild, was als jpg gespeichert wird, runter zu bekommen nutze ich dem ImageWriter für JPGs. Ich würde jetzt gerne die JPGs direckt in ein ZipFile schrieben, also ohne erst auf die Festplatte und dan ins Zip file. Mein methode für das Schreiben der Images sieht so aus:
Nur so bekomme ich eine IllegalArgumentException in der Methode setOutput()! geht es überhaupt das Bild dierekt in ein zipfile zu schrieben? Oder hat jemand eine Andere Idee?
Ich bin gerade am ImageWriter und habe ein Programm das Bilder verkleinert und die Quality runter schraubt. um die quality von dem Bild, was als jpg gespeichert wird, runter zu bekommen nutze ich dem ImageWriter für JPGs. Ich würde jetzt gerne die JPGs direckt in ein ZipFile schrieben, also ohne erst auf die Festplatte und dan ins Zip file. Mein methode für das Schreiben der Images sieht so aus:
Java:
Iterator<ImageWriter> iterator = ImageIO.getImageWritersBySuffix("jpg");
imageWriter = (ImageWriter) iterator.next();
imageWriteParam = new JPEGImageWriteParam(Locale.getDefault());
imageWriteParam.setCompressionMode(JPEGImageWriteParam.MODE_EXPLICIT);
imageWriteParam.setCompressionQuality((float) (quality / 100.0));
...
private void writeImage(BufferedImage image, File f) {
if(f.exists() && convertManager.isOverwirte() == false){
logger.error("Can't create File: " + f.getName() + ", already exist!");
return;
}
try {
if(convertManager.isZIP()){
out.putNextEntry(new ZipEntry(f.getName()));
imageWriter.setOutput(out);
imageWriter.write(null, iioImage, imageWriteParam);
out.closeEntry();
}else {
IIOImage iioImage = new IIOImage(image, null, null);
ImageOutputStream out = ImageIO.createImageOutputStream(f);
imageWriter.setOutput(out);
imageWriter.write(null, iioImage, imageWriteParam);
out.flush();
out.close();
}
} catch (IOException e) {
logger.error(e);
}
}