android.graphics.Bitmap.sameAs android 0当比较2位图相同的配置,尺寸,像素数据时不返回true

android.graphics.Bitmap.sameAs android 0当比较2位图相同的配置,尺寸,像素数据时不返回true

问题描述:

我从本地原始位图创建克隆位图。 并尝试通过API android.graphics.Bitmap.sameAs()比较在Java 2层位图,它在的AndroidØ返回,但在其他Android版本返回真正。 此外,我也尝试通过在安卓Android的Ø位图API,如比较配置,尺寸,像素数据:android.graphics.Bitmap.sameAs android 0当比较2位图相同的配置,尺寸,像素数据时不返回true

private boolean compareBitmap(Bitmap bitmap1, Bitmap bitmap2) 
{ 
    // Different types of image 
    if (bitmap1.getConfig() != bitmap2.getConfig()) 
     return false; 

    // Different sizes 
    if (bitmap1.getWidth() != bitmap2.getWidth()) 
     return false; 

    if (bitmap1.getHeight() != bitmap2.getHeight()) 
     return false; 

    int w = bitmap1.getWidth(); 
    int h = bitmap1.getHeight(); 

    int[] argbA = new int[w * h]; 
    int[] argbB = new int[w * h]; 

    bitmap1.getPixels(argbA, 0, w, 0, 0, w, h); 
    bitmap2.getPixels(argbB, 0, w, 0, 0, w, h); 

    // Alpha channel special check 
    if (bitmap1.getConfig() == Bitmap.Config.ALPHA_8) 
    { 
     final int length = w * h; 
     for (int i = 0; i < length; i++) 
     { 
      if ((argbA[i] & 0xFF000000) != (argbB[i] & 0xFF000000)) 
      { 
       return false; 
      } 
     } 
     return true; 
    } 

    return Arrays.equals(argbA, argbB); 
} 

的方法compareBitmap()也于Android的O. 返回true所以,我不知道为什么android.graphics.Bitmap.sameAs()在这种情况下返回false,当2位图具有相同的配置,尺寸,像素数据?

仔细检查传递的位图是否为空。如果它为空,它将返回false。否则,我不明白为什么要返回它

+0

在使用compareBitmap()之前,我确实检查位图不为null。如您所知,bitmap.sameAs()在Android O中返回FALSE,但在旧版Android版本中返回TRUE – Eric