Grazie! Adesso provo ad allegare questo codice (magari a 0.2f per una migliore qualità) con un resizing appropriato (dato che mi serve fare un resize dell'immagine per smartphone, quindi max a 1280x720) con magari pure una compressione di byte e dovrebbe uscire fuori una compressione perfetta! =)Originariamente inviato da Andrea1979
con questo:
che altro non è che il codice di cui alla pagina che ti avevo linkato prima, ma con una compressione un po' più spinta, da una jpeg panoramica (4994 x 1008, 1.95MB) ottengo un file di circa 115KB, quindi ben al di sotto del 10% da te richiesto.codice:import javax.imageio.*; import javax.imageio.stream.*; import java.util.*; import java.io.*; import java.awt.image.*; /** * * @author Andrea */ public class ImageIOTest { static String src = "C:/Users/Andrea/Desktop/imgtest/src.jpg"; static String dest = "C:/Users/Andrea/Desktop/imgtest/dest.jpg"; public static void main (String[] args) throws Exception { BufferedImage bimg = ImageIO.read(new File(src)); Iterator<ImageWriter> i = ImageIO.getImageWritersByFormatName("jpeg"); // Just get the first JPEG writer available ImageWriter jpegWriter = i.next(); // Set the compression quality to 0.1 ImageWriteParam param = jpegWriter.getDefaultWriteParam(); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionQuality(0.1f); // Write the image to a file FileImageOutputStream out = new FileImageOutputStream(new File(dest)); jpegWriter.setOutput(out); jpegWriter.write(null, new IIOImage(bimg, null, null), param); jpegWriter.dispose(); out.close(); } }
Se poi con i metodi messi a disposizione da imageio riesci a fare tutto senza passare per file d'appoggio (sono convinto che si possa, d'altronde da una BufferedImage si parte comunque) meglio.
PS questo codice è buono per il resizing della BufferedImage?
(Il metodo è createHeadlessBufferedImage())
Compress