0

我正在创建一个应用程序并想要设置 Image 。我不希望图像大小相同,但图像质量相同。如何在android中调整该图像的大小但图像质量相同?

我正在使用这种方法来调整图像大小

  Bitmap myBitmap = BitmapFactory.decodeFile(imgFile
                        .getAbsolutePath());

                int h = myBitmap.getHeight() / 20;
                int w = myBitmap.getWidth() / 20;
                Bitmap scaled =                                           Bitmap.createScaledBitmap(myBitmap, w, h,
                        true);

                imageTab.setImageBitmap(scaled);
4

3 回答 3

0

这是代码片段..

private static BufferedImage resizeImage(BufferedImage originalImage, int type){
    BufferedImage resizedImage = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, type);
    Graphics2D g = resizedImage.createGraphics();
    g.drawImage(originalImage, 0, 0, IMG_WIDTH, IMG_HEIGHT, null);
    g.dispose();

    return resizedImage;
    }

BufferedImage resizeImagePng = resizeImage(originalImage, type);
ImageIO.write(resizeImagePng, "png", new File("Image PAth"));
于 2013-06-28T10:11:42.193 回答
0

通过以下方法传递您想要调整大小的 btimap 和您希望它调整大小的大小

 public Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) 
         {
            int width = bm.getWidth();
            int height = bm.getHeight();
            float scaleWidth = ((float) newWidth) / width;
            float scaleHeight = ((float) newHeight) / height;
            // CREATE A MATRIX FOR THE MANIPULATION
            Matrix matrix = new Matrix();
            // RESIZE THE BIT MAP
            matrix.postScale(scaleWidth, scaleHeight);

            // "RECREATE" THE NEW BITMAP
            Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false);
            return resizedBitmap;
        }
于 2013-06-28T10:06:18.647 回答
0

你的要求没有意义。每当您调整它的大小时,质量都会改变。缩小会使您的图像丢失细线等图像数据,而放大会使您的图像模糊并失去清晰度。

这是因为你只有这么多的图像数据,你不能随意改变产生高质量图像所需的数据量。

也就是说,使用 PNG 而非 JPG 之类的格式至少可以帮助您节省一些质量,因为 JPG 对数据的压缩程度更高。

于 2013-06-28T10:07:00.930 回答