2016-02-25 2 views
3

В настоящее время я использую камеру по умолчанию для Android, чтобы обрезать изображение. Но это не работает должным образом в некоторых устройствах. В чистых устройствах андроида культура не вызывается, а возвращаемые данные равны нулю. Есть ли другой метод для достижения того же.Обрезка изображения в андроиде без необходимости использования

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

Intent cropIntent = new Intent("com.android.camera.action.CROP"); 
cropIntent.setType("image/*"); 
if(picUri != null) { 
    cropIntent.setDataAndType(picUri, "image/*"); 
} 
String tmpName = imageDir.getAbsolutePath() + File.separator + "img.jpg"; 
File tmpFile = new File(tmpName); 
if (tmpFile.exists()) { 
    tmpFile.delete(); 
} 
Uri tmpUri = Uri.fromFile(tmpFile); 
cropIntent.putExtra("crop", "true"); 
cropIntent.putExtra("aspectX", 16); 
cropIntent.putExtra("aspectY", 9); 
cropIntent.putExtra("outputX", 320); 
cropIntent.putExtra("outputY", 180); 
cropIntent.putExtra("return-data", true); 
cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, tmpUri); 
startActivityForResult(cropIntent, PIC_CROP); 
+0

Я делаю это с намерениями, но работаю на каждом устройстве –

+1

В нескольких устройствах приведенный выше код не будет работать особенно с чистым андроидом. Всегда безопасно избегать использования камеры для обрезки изображения. –

ответ

3

Посмотри this библиотеки. Это поддерживает обрезку изображений без использования намерений Camera crop. Он также поддерживает многие другие функции, такие как поворот и т. Д. Легко реализовать

Предоставленный sample также хорошо написан.

-1

Если изображение можно загрузить в память, вы можете использовать BitmapFactory.decodeFile для загрузки в растровое изображение и сделать обрезку в растровом изображении с помощью createBitmap. Будьте осторожны, делая это с произвольными изображениями, потому что декодирование сработает, если у вас закончится нехватка памяти для загрузки изображения.

+0

Как мы можем сделать обрезку в желаемом разделе изображения, используя этот метод? Вышеупомянутая библиотека обрезки имеет встроенную функцию, которая показывает область выбора. –

+1

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

Смежные вопросы