import java.awt.BorderLayout; import java.awt.Color; import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Iterator; import javax.imageio.IIOImage; import javax.imageio.ImageIO; import javax.imageio.ImageWriteParam; import javax.imageio.ImageWriter; import javax.imageio.stream.FileImageOutputStream; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.border.LineBorder; public class ImageSpeichernClass { private final String inStr = "bild_orig.jpg"; private final String outStr = "bild_save.jpg"; private final String imgType = "jpeg"; private final float imgQuality = 0.1f; public ImageSpeichernClass() { File file = new File(inStr); BufferedImage image = loadImg(file); if (image == null) return; initGUI(image); saveImg(image, new File(outStr), imgType); } private void initGUI(BufferedImage image) { int imageBreite = image.getWidth(); int imageHoehe = image.getHeight(); ImageIcon icon = new ImageIcon(image); JLabel label = new JLabel(icon); label.setBorder(new LineBorder(Color.WHITE)); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.setBackground(Color.DARK_GRAY); panel.add(label, BorderLayout.CENTER); JFrame frame = new JFrame("Bild speichern"); frame.add(panel); frame.setSize(imageBreite + 100, imageHoehe + 100); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); } private BufferedImage loadImg(File file) { BufferedImage image = null; try { image = ImageIO.read(file); } catch (IOException ex) { ex.printStackTrace(); } return image; } private void saveImg(BufferedImage image, File outFile, String imgType) { Iterator iter = ImageIO.getImageWritersByFormatName(imgType); ImageWriter writer = (ImageWriter) iter.next(); ImageWriteParam iwp = writer.getDefaultWriteParam(); iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); iwp.setCompressionQuality(imgQuality); FileImageOutputStream output; try { output = new FileImageOutputStream(outFile); writer.setOutput(output); IIOImage img = new IIOImage((RenderedImage) image, null, null); writer.write(null, img, iwp); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } writer.dispose(); } public static void main(String args[]) { SwingUtilities.invokeLater(() -> new ImageSpeichernClass()); } }