Сохранять разрешение изображения при сжатии растровых изображений - PullRequest
0 голосов
/ 02 октября 2018

В своих приложениях я загружаю все отрисовки и сохраняю их в памяти телефона, но когда я делаю этот процесс, все отрисовки меняются на большое разрешение:

Перед сжатием: FileA.PNG на отрисовке: 423x101;9,52Ko

После сжатия: FileA.PNG на SD-карте: 1269x303;89,36Ko

Знаете ли вы, как сохранить (До) разрешение после сжатия?Я пытаюсь с JPEG, но тот же результат.

public void SaveImage(int resId){

    Bitmap bmp = BitmapFactory.decodeResource(getResources(), resId);

    try {

        OutputStream fOut = null;
        File file = new File(Environment.getExternalStorageDirectory() + File.separator + "Folder", getResources().getResourceEntryName(resId)+".PNG");
        file.createNewFile();
        fOut = new FileOutputStream(file);
        bmp.compress(Bitmap.CompressFormat.PNG, 100, fOut);
        fOut.flush();
        fOut.close();
        MediaStore.Images.Media.insertImage(this.getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName());


    } catch (Exception e) {

    }
}

Если вы можете дать мне подсказку?

Спасибо,

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

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

Вам нужно будет хранить их в папке drawable-nodpi или где-то еще.в raw или assets.

0 голосов
/ 02 октября 2018

Если вы возьмете отрисовку и преобразуете ее в растровое изображение, вы получите каждый кодированный пиксель, и это будет файл большего размера, чем исходный PNG.Если вы сохраните PNG со 100% качеством, это все еще большое изображение.

Установите качество намного ниже:

 bmp.compress(Bitmap.CompressFormat.PNG, 20, fOut);

Играйте с качеством, пока не получите желаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...