Originariamente inviato da Andrea1979
con questo:
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();         
    }
    
}
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.

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.
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! =)

PS questo codice è buono per il resizing della BufferedImage?
(Il metodo è createHeadlessBufferedImage())

Compress