我正在加載兩個位圖,一個位於jpg,另一個位於png格式。圖像完全相同,保存的分辨率相同:3461x2480。在jpg和png中加載相同的圖像會產生不同的位圖大小
當我在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
任何想法?
是文件名是否正確? Img09和Img10?我期待兩個Img10文件僅在其擴展中有所不同... – Piovezan
是的,它們是正確的。我假定文件名不是問題。 – Toni
哦,當然我編輯logcat結果以擺脫噪音(時間戳等),只留下相關的字符串。 – Toni