Я хочу уменьшить размер фото в андроиде, прежде чем загружать его на сервер. Как это сделать без какого-либо эффекта, например, оптимизации на изображении?
Я также хочу разрешить пользователю обрезать изображение, поэтому я нашел несколько учебников, но по комментариям, я узнал, что Пользователь получает ошибку в некоторых версиях Android. Итак, есть ли способ разрешить пользователю обрезать изображения, которые могут быть работоспособны во всех версиях Android.Уменьшить размер фото в Android перед загрузкой на сервер
2
A
ответ
1
Попробуйте это Это работает для меня:
private Bitmap getBitmap(String path) {
Uri uri = getImageUri(path);
InputStream in = null;
try {
final int IMAGE_MAX_SIZE = 1200000; // 1.2MP
in = mContentResolver.openInputStream(uri);
// Decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(in, null, o);
in.close();
int scale = 1;
while ((o.outWidth * o.outHeight) * (1/Math.pow(scale, 2)) >
IMAGE_MAX_SIZE) {
scale++;
}
Log.d(TAG, "scale = " + scale + ", orig-width: " + o.outWidth + ",
orig-height: " + o.outHeight);
Bitmap b = null;
in = mContentResolver.openInputStream(uri);
if (scale > 1) {
scale--;
// scale to max possible inSampleSize that still yields an image
// larger than target
o = new BitmapFactory.Options();
o.inSampleSize = scale;
b = BitmapFactory.decodeStream(in, null, o);
// resize to desired dimensions
int height = b.getHeight();
int width = b.getWidth();
Log.d(TAG, "1th scale operation dimenions - width: " + width + ",
height: " + height);
double y = Math.sqrt(IMAGE_MAX_SIZE
/(((double) width)/height));
double x = (y/height) * width;
Bitmap scaledBitmap = Bitmap.createScaledBitmap(b, (int) x,
(int) y, true);
b.recycle();
b = scaledBitmap;
System.gc();
} else {
b = BitmapFactory.decodeStream(in);
}
in.close();
Log.d(TAG, "bitmap size - width: " +b.getWidth() + ", height: " +
b.getHeight());
return b;
} catch (IOException e) {
Log.e(TAG, e.getMessage(),e);
return null;
}
2
Используйте следующий код, чтобы обрезать и уменьшить размер изображения при выборе его из галереи вашего устройства
Intent photoPickerIntent = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
// photoPickerIntent.setType("image/*");
photoPickerIntent.putExtra("crop", "true");
photoPickerIntent.putExtra("outputX", 512);
photoPickerIntent.putExtra("outputY", 512);
photoPickerIntent.putExtra("aspectX", 1);
photoPickerIntent.putExtra("aspectY", 1);
photoPickerIntent.putExtra("scale", true);
File f = new File(android.os.Environment
.getExternalStorageDirectory(), "tt.jpg");
Надежда это helps..Happy кодирование:
2
public Bitmap decodeAndResizeFile(File f) {
try {
// Decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(new FileInputStream(f), null, o);
// The new size we want to scale to
final int REQUIRED_SIZE = 70;
// Find the correct scale value. It should be the power of 2.
int width_tmp = o.outWidth, height_tmp = o.outHeight;
int scale = 1;
while (true) {
if (width_tmp/2 < REQUIRED_SIZE
|| height_tmp/2 < REQUIRED_SIZE)
break;
width_tmp /= 2;
height_tmp /= 2;
scale *= 2;
}
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
} catch (FileNotFoundException e) {
}
return null;
}
convert your bitmap object to file on=bject and use these ::->
File file = new File("your bitmap path ");
Bitmap bmpp = decodeAndResizeFile(file);
Смежные вопросы
- 1. Уменьшить размер изображения перед загрузкой на сервер Java android
- 2. Уменьшить размер фотографии перед загрузкой
- 3. Как уменьшить размер файла изображения перед загрузкой на сервер
- 4. Изменение размера фото перед сохранением или перед загрузкой на сервер
- 5. Android уменьшает размер изображения перед загрузкой на сервер
- 6. Android Studio: как изменить размер изображения перед загрузкой на сервер?
- 7. Как уменьшить размер изображения перед загрузкой его в хранилище firebase?
- 8. получить длину FLV перед загрузкой на сервер
- 9. Как размер изображения chanage перед загрузкой на сервер
- 10. Android - Уменьшите размер файла изображения перед загрузкой на сервер с помощью Base64
- 11. Как изменить размер файла $ cordovaCapture.captureImage перед загрузкой на сервер?
- 12. Подтвердить размер файла перед загрузкой
- 13. Как уменьшить размер изображения холста перед отправкой на сервер
- 14. Изменить размер изображения на клиенте перед загрузкой
- 15. Android ImageView- уменьшить размер изображения
- 16. Как сжать видеофайл перед загрузкой на сервер в Android?
- 17. Аутентификация данных перед загрузкой на сервер в android
- 18. Совместите несколько фотографий на андроиде перед загрузкой на сервер?
- 19. Сжатие видео и изображений перед загрузкой на сервер
- 20. Изменение размера изображения перед загрузкой на сервер на iOS
- 21. Переименование файла перед загрузкой на сервер
- 22. Поверните изображение перед загрузкой его на сервер
- 23. Как сжать изображение перед загрузкой на сервер
- 24. Сканирование приложения перед загрузкой на сервер?
- 25. Ограничить размер файла перед загрузкой
- 26. Загрузите размер AVAssetDownloadTask перед загрузкой
- 27. PHP изменить размер перед загрузкой
- 28. Показать размер файла перед загрузкой ...?
- 29. Размер файла запроса перед загрузкой
- 30. Получить размер изображения перед загрузкой
http://developer.android.com/training/displaying-bitmaps/load-bitmap.html –