Как сохранить изображение в формате JPEG на Android с пользовательским уровнем качества

На Android, как сохранить файл изображения в формате JPEG с качеством 30%?

В стандартной Java я бы использовал ImageIO для чтения изображения в качестве BufferedImage , а затем сохранил его как файл JPEG с использованием экземпляра IIOImage : http://www.universalwebservices.net/web-programming-resources/java/adjust-jpeg– image-compression-quality-when-saving-images-in-java . Похоже, однако, что Android не javax.imageio пакета javax.imageio .

Вы можете сохранить bitmap в формате JPEG, вызвав сжатие и установив второй параметр:

 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 Чай хорош только не забывайте закрыть все

 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(); 
  • Нет доступного экземпляра типа
  • Я получаю java.lang.classnotfoundexception: com.mysql.jdbc.Driver
  • java.io.StreamCorruptedException: недопустимый заголовок streamа: 54657374
  • Динамический список в приложении Android
  • URLConnection getContentLength () возвращает отрицательное значение
  • как отображать контакты в списке в Android для Android api 11+
  • Не удалось слияние манифеста: uses-sdk: minSdkVersion 8 не может быть меньше
  • Android Geocoder getFromLocationName всегда возвращает null
  • Runtime.exec (): перезагрузка в Android?
  • Проект Android Studio Gradle «Невозможно запустить процесс / инициализацию виртуальной машины»
  • Модель памяти Dalvik такая же, как Java?
  • Interesting Posts

    _addcarry_u64 и _addcarryx_u64 с MSVC и ICC

    Как установить фиксированный пользовательский пароль в Teamviewer (сервер) без отправки регистрационных данных?

    Запуск / установка / отладка приложений Android через Wi-Fi?

    Зачем использовать назначение в состоянии?

    Запустить приложение на OS X с командной строкой

    Динамический анонимный тип в Razor вызывает RuntimeBinderException

    Спасение hdd с плохими секторами: dd vs gddrescue

    Могу ли я настроить таргетинг на: перед или: после псевдоэлемента с помощью сочетания братьев и сестер?

    Перезапустите общий доступ к Windows / Samba в Linux при запуске Windows Server (re)

    Как инвертировать Fn-ключ

    Более быстрая версия гребенки

    Преодоление «Отображение запрещено с помощью X-Frame-Options»

    Как обнаружить закрытие браузера?

    Может ли медиа-запрос изменять размер на основе элемента div вместо экрана?

    Excel: как мне вставить меняющиеся значения ячейки в мою сумму?

    Давайте будем гением компьютера.