@AlexeyID
Начинающий Android разработчик

Как качественно сжать изображение?

Подскажите как более качественно сжать изображение, сейчас имею такой код и такие результаты:

//путь к изображению
                fullPictureObj.get(0).getPath();

                File decodeFile = new File(fullPictureObj.get(0).getPath());

                BitmapFactory.Options options = new BitmapFactory.Options();
                options.inPreferredConfig = Bitmap.Config.ARGB_8888;
                Bitmap bitmapFull = BitmapFactory.decodeFile(fullPictureObj.get(0).getPath(), options);
                int imageHeight = options.outHeight;
                int imageWidth = options.outWidth;

                //Ориентация изображения
                Bitmap rotateBitmap = rotateBitmap(bitmapFull,
                        fullPictureObj.get(0).getRealOrientation());
                bitmapFull.recycle();

                int newWidth = 960;
                float k = (float) imageWidth/ (float) newWidth;
                float newHeightFloat = ((float) imageHeight/k);
                int newHeight = (int) newHeightFloat;


                
                /*
                int maxSize = 960;
                if(imageWidth > imageHeight){
                    newWidth = maxSize;
                    newHeight = (imageHeight * maxSize) / imageWidth;
                } else {
                    newHeight = maxSize;
                    newWidth = (imageWidth * maxSize) / imageHeight;
                }
                */


                Bitmap bitmapMini = Bitmap.createScaledBitmap(rotateBitmap, newWidth, newHeight, false);
               // rotateBitmap.recycle();

                //Сохраняю изображения для сравнения и теста
                MediaStore.Images.Media.insertImage(getContext().getContentResolver(),
                        bitmapMini, "test" , null);


Оригинал: 4608 X 3456 4.78МБ
Результат: 960 X 720 60.6КБ

При сжатие вес не критичен, но результат должен не превышать ширину 1000px

Оригинал: https://pp.userapi.com/c846018/v846018037/e0d60/r9... (не совсем оригинал)
Результат: https://pp.userapi.com/c846018/v846018037/e0d69/Hx...

Как более качественно уменьшить ширину и высоту изображения? Как видно из примера, результат мягко говоря не очень
  • Вопрос задан
  • 446 просмотров
Пригласить эксперта
Ответы на вопрос 1
Moskus
@Moskus
Результат "не очень", потому что у вас адски сильное сжатие, которое в этом коде отдано на откуп самой системы (а там - хз какой коэффициент она использует).
Смотрите вот это обсуждение: https://stackoverflow.com/questions/36487971/how-t...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы