2013-11-19 4 views
7
final BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inJustDecodeBounds = true; 
BitmapFactory.decodeFile(path, options); 
final int height = options.outHeight; 
final int width = options.outWidth; 

Путь - путь к файлу изображения, который является правильным.BitmapFactory.Options дает 0 ширину и высоту

Проблема заключается в options.outHeight и options.outWidth равно 0, когда изображение захватывается в ландшафтном режиме с АВТОПАМИ на. Если я выключу AutoRotate, он отлично работает. Поскольку его ширина и высота равны 0, я получал нулевой битмап в конце.

Полный код:

Bitmap photo = decodeSampledBitmapFromFile(filePath, DESIRED_WIDTH, 
        DESIRED_HEIGHT); 
public static Bitmap decodeSampledBitmapFromFile(String path, int reqWidth, 
      int reqHeight) { 

    // First decode with inJustDecodeBounds=true to check dimensions 
    final BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inJustDecodeBounds = true; 
    BitmapFactory.decodeFile(path, options); 
    // Calculate inSampleSize, Raw height and width of image 
    final int height = options.outHeight; 
    final int width = options.outWidth; 
    options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
    int inSampleSize = 1; 

    if (height > reqHeight) { 
     inSampleSize = Math.round((float) height/(float) reqHeight); 
    } 
    int expectedWidth = width/inSampleSize; 
    if (expectedWidth > reqWidth) { 
     inSampleSize = Math.round((float) width/(float) reqWidth); 
    } 
    options.inSampleSize = inSampleSize; 

    // Decode bitmap with inSampleSize set 
    options.inJustDecodeBounds = false; 

    return BitmapFactory.decodeFile(path, options); 
} 
+0

даже столкнулся с той же проблемой. Вы найдете на нем какую-нибудь работу? – ARP

ответ

5

Я была такая же проблема, я установил ее, изменив:

BitmapFactory.decodeFile(path, options); 

к:

try { 
    InputStream in = getContentResolver().openInputStream(
         Uri.parse(path)); 
    BitmapFactory.decodeStream(in, null, options); 
} catch (FileNotFoundException e) { 
    // do something 
} 

После этого изменения, ширина и высота была правильно установлена.

+0

привет, где вы изменили, вы использовали его BitmapFactory.decodeFile (путь, параметры); дважды. –

Смежные вопросы