Cómo guardar una imagen JPEG en Android con un nivel de calidad personalizado

En Android, ¿cómo guardo un archivo de imagen como JPEG con una calidad del 30%?

En Java estándar, utilizaría ImageIO para leer la imagen como imagen BufferedImage , y luego guardarla como un archivo JPEG usando una instancia de IIOImage : http://www.universalwebservices.net/web-programming-resources/java/adjust-jpeg– image-compression-quality-when-saving-images-in-java . Sin embargo, parece que Android carece del paquete javax.imageio .

Puede almacenar su bitmap en formato JPEG llamando a compress y configurando el segundo parámetro:

 Bitmap bm2 = createBitmap(); OutputStream stream = new FileOutputStream("/sdcard/test.jpg"); /* Write bitmap to file using JPEG and 80% quality hint for JPEG. */ bm2.compress(CompressFormat.JPEG, 80, stream); 

 InputStream in = new FileInputStream(file); try { Bitmap bitmap = BitmapFactory.decodeStream(in); File tmpFile = //...; try { OutputStream out = new FileOutputStream(tmpFile); try { if (bitmap.compress(CompressFormat.JPEG, 30, out)) { { File tmp = file; file = tmpFile; tmpFile = tmp; } tmpFile.delete(); } else { throw new Exception("Failed to save the image as a JPEG"); } } finally { out.close(); } } catch (Throwable t) { tmpFile.delete(); throw t; } } finally { in.close(); } 

@Phyrum Tea solo es bueno, no te olvides de cerrar todo

 InputStream in = new FileInputStream(context.getFilesDir()+"image.jpg"); Bitmap bm2 = BitmapFactory.decodeStream(in); OutputStream stream = new FileOutputStream(String.valueOf(context.getFilesDir()+pathImage+"/"+idPicture+".jpg")); bm2.compress(Bitmap.CompressFormat.JPEG, 50, stream); stream.close(); in.close();