Мое растровое изображение обрезается после decodeUriAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Мое растровое изображение обрезается после decodeUri

Сообщение Anonymous »

Я использую этот метод:
public Bitmap decodeUri(Uri selectedImage) throws FileNotFoundException {

BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(getContentResolver().openInputStream(selectedImage), null, o);

final int REQUIRED_SIZE = 800;

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(getContentResolver().openInputStream(selectedImage), null, o2);
}

Чтобы декодировать URI с камеры mi и затем отправить на мой веб-сервер через объект HttpURLConnection в заголовках POST. Но вместо этого я получаю исходное изображение:
Изображение

Я получаю обрезанное изображение:
Изображение

Я не знаю почему. Возможно, мой метод decodeURI неверен? Кто-нибудь знает другой лучший способ отправить сжатое изображение на мой веб-сервер?
Я использовал следующий способ вместо моего метода decodeUri:
mybitMap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImageUri);

и у меня такая же проблема. И когда я попытался открыть изображение на своем веб-сервере с помощью Photoshop, я увидел рекламу, в которой говорилось: «Этот документ может быть поврежден (файл может быть обрезан или неполным). Продолжить?» И после продолжения я вижу черное пространство внизу изображения...
Кто-нибудь знает, почему? Мой код:
Bitmap mybitMap = null;
try {
mybitMap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImageUri);

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

ByteArrayOutputStream baos = new ByteArrayOutputStream();
imagen.compress(Bitmap.CompressFormat.JPEG, 100, baos);

И я отправляю это в заголовках POST:
Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);


Подробнее здесь: https://stackoverflow.com/questions/329 ... -decodeuri
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»