gpt4 book ai didi

android - Android 中的 InSampleSize 计算错误吗?

转载 作者:搜寻专家 更新时间:2023-11-01 09:38:36 25 4
gpt4 key购买 nike

这是this link提供的方法来自谷歌。

public static int calculateInSampleSize(
BitmapFactory.Options options, int reqWidth, int reqHeight) {
// Raw height and width of image
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;

if (height > reqHeight || width > reqWidth) {

final int halfHeight = height / 2;
final int halfWidth = width / 2;

// Calculate the largest inSampleSize value that is a power of 2 and keeps both
// height and width larger than the requested height and width.
while ((halfHeight / inSampleSize) >= reqHeight
&& (halfWidth / inSampleSize) >= reqWidth) {
inSampleSize *= 2;
}
}

return inSampleSize;
}

如果有一张 500*500 的图片需要调整为 100*100,则此代码段的结果为 4,因为它们使用了 halfWidthhalfHeight。但是如果我理解正确的话,结果应该是8。我觉得代码应该修改为:

while ((halfHeight / inSampleSize) > reqHeight
&& (halfWidth / inSampleSize) > reqWidth) {
inSampleSize *= 2;
}
inSampleSize *= 2;

谁能解释一下?我发现他们已经多次修改这段代码,但似乎还是不对?

最佳答案

这个想法是将图像按两步缩小:首先按小于或等于所需下采样因子的 2 的最高幂,然后按小于 2 的量以最终要求的大小结束图片大小。

If there is a 500*500 image which required to be resized to 100*100, the result of this snippet is 4 because they use halfWidth and halfHeight. But if I understand it correctly, the result should be 8.

如果比例因子为 8,则 500x500 像素的图像将缩小到 62x62 像素,然后需要放大到请求的 100x100 像素大小。

正如代码注释所说:

Calculate the largest inSampleSize value that is a power of 2 and keeps both height and width larger than the requested height and width.

这将是 4,因为这样您最终会得到一张 125x125 像素的图像,它大于请求的 100x100 像素的高度和宽度。这个想法是,您希望在最后一步缩小,而不是缩小太多,然后不得不重新放大并得到模糊的图像。

要求的下采样因子为5,小于或等于2的最高次方为4。

关于android - Android 中的 InSampleSize 计算错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41337903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com