2016-04-05 30 views
0

Bu, kodumun basitleştirilmiş bir sürümüdür. Uygulama ekranının iki ekran görüntüsünü alıyorum ve first.png içinde sakladım ve görebildiğim sec.png app \ src klasöründe bulunuyor. Görüntüleri açabilirim ve doğru ekran görüntüleri olduklarını görebiliyorum. Ancak bitmap'leri kullanarak bitmap'i almaya çalışırken null olurum. Mutlak yol ve ayrıca göreceli yol vermeyi denedim ve diğer benzer soru yanıtlarını takip ettim, bu yüzden lütfen çift olarak işaretlemeden önce bir göz atın. Eğer BitmapFactory.decodeFile üzerinde NPE alıyorsanızBitmapFactory decodeFile döndürür null

class Test{ 
private static boolean compareImages() throws FileNotFoundException { 
    ​Bitmap bitmap1 = BitmapFactory.decodeFile("src/"+imgFirst); 
    Bitmap bitmap2 = BitmapFactory.decodeFile("src/"+imgSecond); 
    if (bitmap1.getWidth() != bitmap2.getWidth() || 
      bitmap1.getHeight() != bitmap2.getHeight()) { 
     return false; 
    } 

    for (int y = 0; y < bitmap1.getHeight(); y++) { 
     for (int x = 0; x < bitmap1.getWidth(); x++) { 
      if (bitmap1.getPixel(x, y) != bitmap2.getPixel(x, y)) { 
       return false; 
      } 
     } 
    } 
    return true; 
} 
public static boolean test() { 

    File scrFile = (Setup.getDriver()).getScreenshotAs(OutputType.FILE);//The Setup.getDriver() returns an AppiumDriver. 
    FileUtils.copyFile(scrFile, new File(imgFirst)); 
    scrFile = (Setup.getDriver()).getScreenshotAs(OutputType.FILE); 
    FileUtils.copyFile(scrFile, new File(imgSecond)); 
    if(compareImages()) 
     return false; 
    else 
     return true; 
} 
    private static String imgFirst = "first.png"; 
    private static String imgSecond = "sec.png"; 
} 
+0

' BitmapFactory 'içe aktarıldı mı? – nullpointer

+0

'android.graphics.Bitmap' ve 'android.graphics.BitmapFactory' – Gsquare

+0

'ı çektim tamam, – nullpointer

cevap

0

dosyanızın mutlak yolunu almak için uğraşacak ve olarak kullanmak olmalıdır: Başvurulan

String firstImage=new File(getFilesDir(), imgFirst).getAbsolutePath(); 
​Bitmap bitmap1 = BitmapFactory.decodeFile(firstImage); 

: nerede Kodunuzdaki SO-3388898