Bitmap.compress (Bitmap.CompressFormat.PNG, 0, fOut), делая размер изображения больше оригинального

Я хочу сжать изображение, взятое из камеры, в формат png, чтобы сделать их меньшими по размеру, поэтому я использую этот код:

compressedPictureFile = new File(imagePath); Bitmap bitmap = BitmapFactory.decodeFile(imagePath); FileOutputStream fOut = new FileOutputStream(compressedPictureFile); boolean compressed = bitmap.compress(Bitmap.CompressFormat.PNG, 0, fOut); fOut.flush(); fOut.close(); 

Проблема в том, что compressionPictureFile на самом деле больше, чем исходное изображение (от 1 Мбайт до 6 Мб)

Что мне не хватает? И это лучший способ уменьшить размер изображения?

благодаря

Solutions Collecting From Web of "Bitmap.compress (Bitmap.CompressFormat.PNG, 0, fOut), делая размер изображения больше оригинального"

Изображения, сделанные с помощью камеры, скорее всего хранятся в jpg формате, который является потерянным, но относительно хорош для изображений с большим количеством цветов (например, фотографий).

Когда вы сжимаете растровое изображение, используя свой метод, вы сохраняете его как png . Сжатие png без потерь, но может достигать довольно маленьких файлов, когда есть несколько цветов (например, в некоторых логотипах или другой графике). Когда количество цветов и сложности в png-файле увеличивается, размер файла (поэтому камера сохраняет jpg – соотношение качества / размера файла намного лучше, чем png для большинства фотографий).

Итак, если вы хотите уменьшить размер файлов, используйте сжатие jpg и поэкспериментируйте с параметром качества. Вы также можете уменьшить разрешение изображений, так как это позволит сэкономить много места (файл с 50% разрешением будет составлять около 25% в размере данных).