当前位置: 首页 > 面试题库 >

在Android中裁剪图像并调整其大小

孙才捷
2023-03-14
问题内容

我正在从磁盘读取图像,并将其显示在一行中ListView。图像文件大于ImageView行中需要显示的图像文件。由于我需要将bitmapsRAM
缓存在内存中以加快访问速度,因此我希望它们的大小只能与ImageViews 一样大(85x85 dip)

现在我正在读文件

位图= BitmapFactory.decodeFile(file);

而ImageView负责缩放和裁剪它

android:scaleType =“ centerCrop”

AFAIK这是将整个位图保留在内存中(因为我将其缓存为XD),这很糟糕

如何在加载文件时从ImageView中消除此责任并进行裁切和缩放?所有位图将以85x85倾斜度显示,并且需要为“ centerCrop”


问题答案:

您可以在加载,裁剪和缩放之前找出图片的尺寸:

BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;

    Bitmap bmo = BitmapFactory.decodeFile(file.getAbsolutePath(), options);

然后以样本大小加载:

...
options.inSampleSize = 1/2;
bmo = BitmapFactory.decodeFile(file.getAbsolutePath(), options);

...
 = Bitmap.createScaledBitmap(bmo, dW, dH, false);

不要忘记回收临时位图,否则您将获得OOME。

bmo.recycle();


 类似资料:
  • 问题内容: 我想显示具有特定宽度和高度的URL的图像,即使它 具有不同的尺寸比例。所以我想调整大小(保持比例), 然后将图像切成我想要的大小。 我可以使用html img属性调整大小,也可以使用剪切background-image。 我该怎么办? 例: 这个图片: 具有800x600像素大小,我想显示为200x100 像素图像 通过img我可以调整图像大小200x150px: 这给了我这个: 而且

  • 我是图像处理新手,开始学习scikit图像。我试图检测矩形的角,然后裁剪整个图像。但我完全迷失在大量的分割和检测算法中,不知道我需要哪种算法以及如何去做。 此代码生成一个示例图像。我想把它裁剪成绿色的矩形。我需要做什么? 从matplotlib将pyplot导入为pyplot 任务是检测矩形(多边形阵列)的边缘并将图像裁剪到其中。 我尝试了哈里斯角检测,精明的边缘检测和许多其他,但我完全困惑。这似

  • 我试图在JavaFX画布上显示非常大的图像。单个图像的分辨率为11980x8365。每个图像都有一个相应的世界文件,我可以用它来正确定位图像。我的画布尺寸是800x600。有时我需要把整个图像写在画布上,有时只是其中的一部分。 以下是我到目前为止所做的: 将文件中的全尺寸图像加载到Image对象中。 计算要显示图像的哪一部分,并计算缩放参数以正确地将其放入800x600画布中。 所以基本上我想使用

  • 我们现在知道调用drawImage方法的第一种方式,即将完整尺寸的图像绘制到画布上,但超过画布边界的部分被剪掉了。 为了解决这个问题,需要调整图像大小或者控制图像的裁剪。通过drawImage方法的最后两种调用方式都能够完成这两个任务。 第一种调用可以调整图像大小,第二种可以同时调整和裁剪图像。drawlmage的所有调用方式的唯一区别是所使用参数的个数和类型不同。 调整图像大小 调整图像大小与绘

  • 问题内容: 我一直在尝试使用NodeJS 的程序包创建一些缩略图,但是我很幸运。我需要调整大于600x600的图像大小(从给定的宽度/高度开始,可以是任何宽度/高度),但是当我将尺寸传递给gm时,它将创建与我要求的尺寸不同的图像。 例如,给定此代码,我假设运行时将收到大小为200x100的图像,但我得到的图像为180x100或200x90 … 我也尝试过调整大小选项。甚至还可以选择强制大小,但是输

  • 我试图在从图库中选择图像后使用intent来裁剪图像。以下是我的代码片段 在这里,我使用PICK_IMAGE_REQUEST意图句柄调用上面的代码段 由于我在裁剪后使用了相同的意图,即PICK_IMAGE_REQUEST,可能会出现什么问题