Hallo zusammen,
ich bin das erste Mal hier im Forum und hoffe ihr könnt mir helfen.
Ich bin noch dabei Java zu lernen und habe mir das Ziel gesetzt endlich eine lange gewolltes Programm fertig zu bekommen.
Ich will Bilder (JPG) drehen, dann skalieren (verkleinern) und anschließend ohne Kompression speichern. Alles ohne Sie anzuzeigen.
Habe mir dazu auch schon einiges zusammengesucht aber so richtig funktioniert es nicht.
Das drehen des Bildes funktioniert prima.
Das skalieren nur noch so halb.
Ich bekomme zwar ein Bild mit der richtigen Größe, es ist aber leer (bzw. grau :bahnhof: ).
Die dann folgende Einstellung der Kompression funktioniert wieder.
Das endgültig Bild ist dann durch das fehlerhafte Ergebnis der Skalierung ebenfalls leer.
Habt ihr eine Idee wo es dabei hakt ???
Vielen Dank
Sandforelle
ich bin das erste Mal hier im Forum und hoffe ihr könnt mir helfen.
Ich bin noch dabei Java zu lernen und habe mir das Ziel gesetzt endlich eine lange gewolltes Programm fertig zu bekommen.
Ich will Bilder (JPG) drehen, dann skalieren (verkleinern) und anschließend ohne Kompression speichern. Alles ohne Sie anzuzeigen.
Habe mir dazu auch schon einiges zusammengesucht aber so richtig funktioniert es nicht.
Das drehen des Bildes funktioniert prima.
Code:
//Bild drehen
BufferedImage inputImage = ImageIO.read(new File( "C:/IMG_0001.jpg" ));
new RotateImage( 90 ); // current Angle
BufferedImage rotatedImage = rotateImage(inputImage);
ImageIO.write(rotatedImage,"JPG",new File("C:/rot.jpg"));
//---------------------
Das skalieren nur noch so halb.
Ich bekomme zwar ein Bild mit der richtigen Größe, es ist aber leer (bzw. grau :bahnhof: ).
Code:
//Bild skalieren
BufferedImage scaledImage = new BufferedImage(2048, 3072, BufferedImage.TYPE_INT_RGB);
Graphics2D g = scaledImage.createGraphics();
AffineTransform at = AffineTransform.getScaleInstance((double)2048,(double)3072);
g.drawRenderedImage(rotatedImage,at);
ImageIO.write(scaledImage,"JPG",new File("C:/rot_skal.jpg"));
//-----------------------
Die dann folgende Einstellung der Kompression funktioniert wieder.
Das endgültig Bild ist dann durch das fehlerhafte Ergebnis der Skalierung ebenfalls leer.
Code:
//Compression einstellen
Iterator iterator = ImageIO.getImageWritersBySuffix("jpeg");
ImageWriter imageWriter = (ImageWriter) iterator.next();
JPEGImageWriteParam imageWriteParam = new JPEGImageWriteParam(Locale.getDefault());
imageWriteParam.setCompressionMode(JPEGImageWriteParam.MODE_EXPLICIT);
imageWriteParam.setCompressionQuality(1.0F);
//Speichern
IIOImage iioImage = new IIOImage(scaledImage, null, null);
imageWriter.setOutput(ImageIO.createImageOutputStream(new File("C:/rot_skal_comp.jpg")));
imageWriter.write(null, iioImage, imageWriteParam);
//--------------------------------------
Habt ihr eine Idee wo es dabei hakt ???
Vielen Dank
Sandforelle