Ik probeer afbeeldingen op te slaan in het JPEG formaat. De standaard manier voor met ImageIO.write() werkt uitstekend, maar je kan er geen compressie mee instellen.
Na lang zoeken en van alles proberen lukt het me maar niet om die compressie werkend te krijgen.
In deze laatste poging worden afbeeldingen wel lelijker, met allerlei JPEG artifacts, maar de bestanden worden niet kleiner (ongeveer 250 KB voor een plaatje van 400x400 pixels).
Na lang zoeken en van alles proberen lukt het me maar niet om die compressie werkend te krijgen.
In deze laatste poging worden afbeeldingen wel lelijker, met allerlei JPEG artifacts, maar de bestanden worden niet kleiner (ongeveer 250 KB voor een plaatje van 400x400 pixels).
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| private void saveImage(BufferedImage image, File imageFile, float imageQuality, String imageFormat) { try { // Find a writer ImageWriter writer = null; Iterator iter = ImageIO.getImageWritersByFormatName(imageFormat); if(iter.hasNext()) { writer = (ImageWriter)iter.next(); } // Prepare output file ImageOutputStream ios = ImageIO.createImageOutputStream(imageFile); writer.setOutput(ios); System.out.println("Saving image with quality " + imageQuality); writeParam.setCompressionQuality(imageQuality); // Write the image writer.write(null, new IIOImage(image, null, null), writeParam); // Cleanup ios.flush(); writer.dispose(); ios.close(); } catch (IOException e) { } } |
Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.