Сжатие изображения в растровом изображении и загрузка на сервер в android Q - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь загрузить изображение на один из серверов, но на стороне сервера есть определенные ограничения по разрешению. Но перед загрузкой мы сжимаем файл изображения с помощью растрового изображения.

Ниже приведен код для сжатия растрового изображения и вставка изображения в android q framework.

        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.DISPLAY_NAME, filename);
        values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");

        values.put(MediaStore.Images.Media.DATE_ADDED, System.currentTimeMillis());
        values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis());
        uri =getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values);
        stream=getContentResolver().openOutputStream(uri);
        inImage.compress(Bitmap.CompressFormat.JPEG, 100, stream);

мы можем получить URI из приведенного выше кода.

public String getRealPathFromURI(Uri uri) {
    Cursor cursor = getContentResolver().query(uri, null, null, null, null);
    cursor.moveToFirst();
    int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
    Log.d(TAG, "getRealPathFromURI: idx "+idx+"  cursor.getString(idx)"+cursor.getString(idx));

    return cursor.getString(idx);
}

Но так как вышеуказанный метод устарел, я не могу получить реальный путь УРИ для android В. Может ли кто-нибудь помочь мне с тем же. я уже ссылался на дескриптор файла, но ничего не понял. Если возможно, любой пример того же с вышеупомянутым сценарием в уме, будет делать. или, если есть другое решение, предложите то же самое. Если вы заявляете решение, укажите его только для android Q.

Спасибо.

1 Ответ

0 голосов
/ 15 января 2020

Если вы действительно можете загружать файлы только с использованием класса File и без использования входного потока (трудно в это поверить, но ala), тогда на Android Q не сохраняйте в хранилище мультимедиа, а сжимайте ваше растровое изображение в файл в getExternalFilesDir () или getFilesDir ().

Разрешения не требуются, и у вас есть путь к файлу.

...