Если имеет значение только размер файла, вам нужно использовать формат файла изображения, в котором не используется сжатие.Вы должны иметь возможность взять изображение с такими атрибутами, как ширина, высота, битовая глубина и т. Д., И рассчитать ожидаемый размер файла для такого изображения.
Итак, используя такой формат файла, вы начинаете сисходное изображение, и у вас есть
Размер файла = ширина x высота x глубина в битах + метаданные / накладные расходы.
Я предполагаю, что вы также хотите сохранить исходное соотношение сторон.В этом случае вы, вероятно, можете просто определить процент уменьшения размера файла по сравнению с текущим размером файла и умножить ширину и высоту на тот же%.Масштабируйте свое изображение, используя API для работы с растровым изображением, а затем сохраните его.Он должен быть близок к размеру файла, который вы ищете.
Для API Android Bitmap вы можете использовать getByteCount (), чтобы определить, сколько байтов занимает изображение в данный момент.Вы также можете использовать getConfig (), чтобы определить, сколько байтов на пиксель.
Итак, ваш конечный размер целевого файла, конвертированный в байты, деленный на количество байтов на пиксель, дает вам количество пикселей, которое вам разрешено.Число разрешенных пикселей, деленное на количество пикселей в вашем текущем изображении, даст вам коэффициент масштабирования.Используйте масштабный коэффициент и масштабируйте изображение, сохраняя текущее соотношение сторон, и у вас должно быть растровое изображение с количеством пикселей, близких к вашей цели.Затем сохраните файл в формате, который не использует сжатие.