ImageWriter und ZipOutputStream

dayaftereh

Top Contributor
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:
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);			
		}
	}
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?
 
R

Roar

Gast
Hi, auch beim ZIP schreiben brauchst einen ImageOutputStream, nur halt mit deinem ZipOutputStream anstatt deinem File als destination.
 

dayaftereh

Top Contributor
Hey Super danke! Ant perfekt geklappt! Man muss einfach mit ImageIO.createImageOutputStream(ZipOutputStream); und dem ZipOutputStream ein ImageOutputStream erzugen!
 

Ähnliche Java Themen

Neue Themen


Oben