Потеряно ли разрешение изображения при загрузке изображения JPG в Android Studio в виде растрового изображения? - PullRequest
0 голосов
/ 28 ноября 2018

Я работаю над приложением Android, которое просматривает различные свойства изображений, и я заметил, что если я начну с изображения JPG с размерами 1920x1080 и загружу это изображение в свое приложение как растровое изображение, открыв галерею и выбрав соответствующее изображениеРазмеры растрового изображения составляют 1024x576.Я не объявлял ширину или высоту для растрового изображения и, хотя я в конечном итоге устанавливаю свое растровое изображение как imageView, когда я ставлю точку останова в своем коде до того, как это произойдет, размеры все еще низкие.

Потеряно ли разрешение в моем изображении?

Как импортировать изображения в виде растровых изображений без ущерба для разрешения?

Ниже приведен код для импорта моего изображения из внешнего хранилища наТелефон в моем приложении

public void openGallery(View v){

     runStop = false;
    mHandler.removeCallbacks(mStartScan);
    mStreamButton.setText("Start stream");

    Intent myIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

    startActivityForResult(myIntent, 100);

    ppm = 0;
    numberOfDots = 0;

    if (countParticles.equals(true)){
        mDots.setText(null);
        mPpm.setText(null);
    }



    uploadedImage = true;

    //listItems.clear();
   // mAdapter.notifyDataSetChanged();

}



@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == 100 && resultCode == RESULT_OK && data!=null){
        Uri imageUri = data.getData();
        try{
            imageBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri);
        }catch (IOException e)
        {
            e.printStackTrace();
        }

        mImageView.setImageBitmap(imageBitmap);

        if (processImage.equals(true)){
            convertToGray();
        }
    }
}

Грубое сравнение изображений

Ниже приведено сравнение двух одинаковых точек.Отладчик Android Studio позволяет просматривать растровые изображения, но не копировать и не сохранять их, поэтому лучшее, что я мог сделать, - это распечатать экран, пока оба изображения открыты на моем экране.

1 Ответ

0 голосов
/ 28 ноября 2018

Чтобы ответить на ваш вопрос: разрешение не теряется.

Я думаю, что вы были введены в заблуждение из-за очень запутанного отображения в окне Android View "View Bitmap".Это не отображает фактический размер растрового изображения в пикселях.Я не уверен, что именно это (кто-нибудь?);возможно, это dp.

Также ясно, что изображение «Просмотр растрового изображения» подвергается пониженной выборке.Вот почему пиксели выглядят иначе.Окно предварительного просмотра определенно не представляет изображение с той же точностью, что и в памяти вашего Bitmap объекта.

Лучший способ проверить Bitmap's фактические размеры - этопосмотрите на участников mWidth и mHeight или используйте Bitmap.getWidth()/getHeight().

Если вы мне не верите, обратите внимание, что на изображении, которое вы разместили, есть подсказка в самом низу.Это очень трудно увидеть, но вы можете сказать, что imageBitmap's mBuffer имеет длину 8294400 байт.

1920 x 1080 x 4 (bytes per pixel) = 8294400

(я проверил это на своей собственной коробке, я смог воспроизвести проблему. Поверьте мне- фактический Bitmap является полноразмерным, без потери данных.)

...