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
。否则,我不明白为什么要返回它
在使用compareBitmap()之前,我确实检查位图不为null。如您所知,bitmap.sameAs()在Android O中返回FALSE,但在旧版Android版本中返回TRUE – Eric