Изменить размер изображения до точного размера файла - PullRequest
2 голосов
/ 16 июля 2011

На самом деле я разрабатываю одно приложение, где мое требование таково, что мне нужно масштабировать изображения большого размера до некоторого предопределенного размера в соответствии с выбором пользователя.Например, предположим, что у меня есть изображение размером 1 МБ, и пользователь выбирает его, чтобы преобразовать в изображение размером 100 КБ, тогда мне нужно изменить размер этого изображения до 100 КБ.В последний день я пытаюсь добиться этого с помощью API-интерфейсов Bitmap, но не могу достичь точного размера, который хочет пользователь.Иногда очень большой, иногда очень маленький.Поэтому, пожалуйста, если кто-нибудь знает, как изменить размер изображения в Android до точного размера (который изменяется в соответствии с выбором пользователя).Пожалуйста, помогите мне в этом.

1 Ответ

2 голосов
/ 16 июля 2011

Если имеет значение только размер файла, вам нужно использовать формат файла изображения, в котором не используется сжатие.Вы должны иметь возможность взять изображение с такими атрибутами, как ширина, высота, битовая глубина и т. Д., И рассчитать ожидаемый размер файла для такого изображения.

Итак, используя такой формат файла, вы начинаете сисходное изображение, и у вас есть

Размер файла = ширина x высота x глубина в битах + метаданные / накладные расходы.

Я предполагаю, что вы также хотите сохранить исходное соотношение сторон.В этом случае вы, вероятно, можете просто определить процент уменьшения размера файла по сравнению с текущим размером файла и умножить ширину и высоту на тот же%.Масштабируйте свое изображение, используя API для работы с растровым изображением, а затем сохраните его.Он должен быть близок к размеру файла, который вы ищете.

Для API Android Bitmap вы можете использовать getByteCount (), чтобы определить, сколько байтов занимает изображение в данный момент.Вы также можете использовать getConfig (), чтобы определить, сколько байтов на пиксель.

Итак, ваш конечный размер целевого файла, конвертированный в байты, деленный на количество байтов на пиксель, дает вам количество пикселей, которое вам разрешено.Число разрешенных пикселей, деленное на количество пикселей в вашем текущем изображении, даст вам коэффициент масштабирования.Используйте масштабный коэффициент и масштабируйте изображение, сохраняя текущее соотношение сторон, и у вас должно быть растровое изображение с количеством пикселей, близких к вашей цели.Затем сохраните файл в формате, который не использует сжатие.

...