gpt4 book ai didi

android - 在 jpg 和 png 中加载相同的图像会导致不同的位图大小

转载 作者:太空狗 更新时间:2023-10-29 12:47:04 26 4
gpt4 key购买 nike

我正在加载两张位图,一张是 jpg 格式,另一张是 png 格式。图像完全相同并以相同的分辨率保存:3461x2480。

当我在 InSampleSize 中使用具有相同比例的 BitmapFactory.decodeFile() 加载图像时,我得到了不同大小的内存位图,jpg 略大于 png。我在画廊中展示两者,区别很明显。我已经在 LogCat 中打印了位图大小,并验证它们在加载后具有不同的大小。两个图像都在外部存储中,并且在同一目录中。

有谁知道为什么它们加载后的大小不同?我该如何控制它?

我使用的代码是:

public static Bitmap loadImageScaled(String fileName, int width, int height){

// Get the dimensions of the bitmap
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
bmOptions.inJustDecodeBounds = true;

BitmapFactory.decodeFile(fileName, bmOptions);

int photoW = bmOptions.outWidth;
int photoH = bmOptions.outHeight;

Log.d(TAG, "Image w= " + photoW + " h=" + photoH + " " + fileName);
Log.d(TAG, "In w= " + width + " h=" + height);

// Determine how much to scale down the image
int scaleFactor = Math.min(photoW/width, photoH/height);
Log.d(TAG, "scaleFactor = " + scaleFactor);

// Decode the image file into a Bitmap
bmOptions.inJustDecodeBounds = false;
bmOptions.inSampleSize = scaleFactor;
bmOptions.inPurgeable = true;

Bitmap bitmap = BitmapFactory.decodeFile(fileName, bmOptions);

Log.d(TAG, "Out w= " + bitmap.getWidth() + " h=" + bitmap.getHeight());

return bitmap;
}

在 LogCat 中,我收到以下消息:

Image w= 3461 h=2480 Img09.jpg
In w= 173 h=124
scaleFactor = 20
Out w= 216 h=155

Image w= 3461 h=2480 Img10.png
In w= 173 h=124
scaleFactor = 20
Out w= 173 h=124

有什么想法吗?

最佳答案

是的,我想没关系:)如果您查看文档 ( http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inSampleSize ),会有关于它如何工作的说明。

如果您计算数字,您会发现 3461/216 = 16 和 3461/173 = 20。这意味着 png 使用所需的样本大小,但 jpg 正在四舍五入到最接近的 2 的幂。

关于android - 在 jpg 和 png 中加载相同的图像会导致不同的位图大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17073812/

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