我正在加载两个位图,一个是 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
任何想法?