Захват изображений Android с сохранением небольших размеров на Milestone
Я написал простое приложение, которое открывает камеру и предоставляет путь для сохранения любых захваченных изображений.
Код в основном выглядит так:
File file = new File( Environment.getExternalStorage() + "myimages/",
"my_image.jpg" );
Uri outputUri = Uri.fromFile( file );
Intent intent = new
Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );
Intent.putExtra( MediaStore.EXTRA_OUTPUT, outputUri );
Это отлично работает на моем Droid. Изображения последовательно сохраняются в 2592x1936. Однако при тестировании на Milestone изображения сохраняются в гораздо меньших размерах, таких как 320x240 и 1280 x 1900. Используя adb logcat, я вижу, что размер изображения устанавливается сразу после съемки фотографии.
Похоже, что на Milestone есть настройка по умолчанию, вызывающая такое поведение.
Любая помощь будет принята с благодарностью.
Спасибо, ~ Джереми
1 ответ
У каждого телефона есть собственное приложение для камеры. Каждое приложение камеры решает, сколько изменить размер и / или сжать любые снятые изображения. Если вы тестируете на большем количестве телефонов, вы, вероятно, обнаружите, что вы получаете различные размеры и качества изображения. Пока вы используете намерения, решать, что делать с ним, зависит от того, какое действие выберет пользователь для обработки этого намерения (которое всегда может отличаться от приложения камеры по умолчанию).
Если вы хотите применить определенный размер или качество изображения, вам нужно написать свою собственную деятельность камеры. Имейте в виду, что разные телефоны будут иметь разное аппаратное обеспечение, которое в любом случае снимает изображения с огромным разнообразием разрешений. У вас должно получиться лучше, чем 320x240, но вы не сможете получить одинаковый размер для всех телефонов, потому что аппаратное обеспечение отличается.