2016-04-26 2 views
1

У меня очень большое изображение на моем устройстве (не снимается с камеры устройства) Мне нужно изменить размер изображения перед отправкой на сервер. Так скажите, что это 14mb изначально, и я хочу уменьшить его до 2mb. Я хочу изменить размер изображения без потери качества. Я имею в виду, что сервер позволит масштабировать фотографию. Поэтому я думаю, что значение важна. Кроме того, я не понимаю, как работает inDensity в этом отношении. Кто-нибудь, пожалуйста, объясните, как я могу изменить размер фотографии до 2mb, но сохраните такую ​​высокую плотность, чтобы изображение можно было увеличить с высоким качеством? Или это невозможно.Изменить размер изображения перед отправкой на сервер

Я уже знаю, как изменить размер изображения:

public static Bitmap resizeImage(String file, int reqHeight, int reqWidth) { 
    BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inJustDecodeBounds = true; 
    BitmapFactory.decodeFile(file, options); 

    options.inSampleSize = calculateInSampleSize(options, reqHeight, reqWidth); 
    options.inJustDecodeBounds = false; 
    return BitmapFactory.decodeFile(file, options); 
} 

ответ

1

Попробуйте это в вашем коде:

Bitmap bmp = BitmapFactory.decodeFile(myImage) 
ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
bmp.compress(CompressFormat.JPEG, 70, bos); 

InputStream in = new ByteArrayInputStream(bos.toByteArray()); 

ContentBody image = new InputStreamBody(in, "image/jpeg", "filename"); 

Он работал для меня!

+0

Спасибо. Что оно делает? Можете ли вы объяснить, почему это работает? –

+0

Метод compress принимает следующие переменные: compress (формат Bitmap.CompressFormat, int quality, поток OutputStream) После того, как вы сжали bmp, вы можете прикрепить его в теле контента запроса. В вашем случае это было бы необязательно, потому что вам нужен только BMP. – kikettas

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