5

在 android 中,当我们从图库中打开屏幕截图时。它模糊了 2 秒,然后自动调整。

但是,当我使用此屏幕截图图像设置图像视图时,使用图像路径为:,

图片路径为:/mnt/sdcard/ScreenCapture/SC20130219-124221.png

private void showImage(String imgPath) {
        // TODO Auto-generated method stub

        System.out.println("Image Path is:  "+imgPath);

        ImageView openImage=(ImageView)findViewById(R.id.img_fullScreen);
        ExifInterface exifMedia = null;
        try {
            exifMedia = new ExifInterface(imgPath);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String exifOrint = exifMedia.getAttribute(ExifInterface.TAG_ORIENTATION);
        int exifOrientation = Integer.parseInt(exifOrint);
        System.out.println("Orientation Tag is:"+exifOrientation);
        BitmapFactory.Options mOptions=new BitmapFactory.Options();
        mOptions.inSampleSize=2;
        Bitmap imgBitmap = BitmapFactory.decodeFile(imgPath,mOptions);
        //Runtime.getRuntime().gc();

        imgBitmap = getResizedBitmapImage(imgBitmap, 200, 200, exifOrientation);
        openImage.setImageBitmap(imgBitmap);
    }

另一种情况:从 URL 获取位图时:

URL url = new URL(urlTarget);
            BitmapFactory.Options mOptions = new BitmapFactory.Options();
            mOptions.inSampleSize=1;
            Bitmap bmp = BitmapFactory.decodeStream(url
                    .openConnection().getInputStream(),null,mOptions);

然后图像本身不会自动调整。它变得模糊。这是我的问题。

仅在屏幕截图的情况下。

谢谢

4

3 回答 3

1

mOptions.inSampleSize=2;这将跳过备用像素数据并加载原始大小的 1/2 的图像。当然,它看起来会很模糊且高度混叠,因为这远不是一个好的图像缩放算法。

就 Gallery 应用程序而言,它会逐步加载,显示缩略图或快速渲染,同时将全分辨率图像加载到内存中。

于 2013-03-02T08:11:55.807 回答
0

将您的代码从 更改mOptions.inSampleSize = 2mOptions.inSampleSize =1 您的问题肯定会得到解决

于 2013-03-04T06:09:51.423 回答
0

这只是 Android Gallery 应用程序的一个棘手行为(也是一个很好的例子,展示了如何在必须加载大图像时获得更好的用户体验)。
首先,当您单击图库中的图像缩略图时,它将完全使用该缩略图显示在 ImageView 中。因为缩略图很小并且需要放大以修复 ImageView,所以您会看到它模糊。
在向用户显示缩略图的同时,它还对原始图像进行解码。一切完成后,将显示原始图像而不是缩略图。
Gallery 在缩略图和原始图像之间切换时也使用动画(默认布局动画,您可以在 API Demos 中找到它)

于 2013-03-02T05:30:45.890 回答