2016-04-05 10 views
0

Dies ist eine vereinfachte Version meines Codes. Ich bekomme zwei Screenshots des App-Bildschirms und store in first.png und sec.png, die ich sehen kann, befindet sich im Ordner app \ src. Ich kann die Bilder öffnen und sehen, dass sie korrekte Screenshots sind. Wenn ich versuche, sie mit bitmapfactory in Bitmap zu bekommen, bekomme ich null. Ich habe versucht, absoluten Pfad und auch relativen Pfad zu geben, und ich habe andere identische Frage Antworten gefolgt, also bitte sehen Sie es sich an, bevor Sie es als doppelt markieren.Die decodeFile von BitmapFactory gibt null zurück

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

in Ihrem Code, wo ist die ' BitmapFactory' importiert? – nullpointer

+0

Ich habe 'android.graphics.Bitmap' und 'android.graphics.BitmapFactory' importiert – Gsquare

+0

okay, könnten Sie den Stacktrace der Ausnahme, die Sie erhalten, – nullpointer

Antwort

0

Wenn Sie eine NPE auf BitmapFactory.decodeFile bekommen sollten Sie versuchen, den absoluten Pfad der Datei bekommen und es verwenden, wie:

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

referenzierte: SO-3388898