元のビットマップからネイティブのクローンビットマップを作成します。 とAPI android.graphics.Bitmap.sameAs()ことで、Java層に2ビットマップを比較してみてください、それはアンドロイドOに偽を返しますが、他のAndroidバージョンで真を返します。 加えて、私はまた、などアンドロイドOでAndroidのビットマップのAPIによって設定、寸法、画素データを比較してみてください。また、だから、私は考えているアンドロイドO. にtrueを返す)android.graphics.Bitmap.same with android O比較したときにtrueを返さない2つのビットマップ同じ設定、寸法、ピクセルデータ
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.graphics.Bitmap.sameAs()がこの場合、2ビットマップが同じ設定、寸法、ピクセルデータを持つ場合にfalseを返しますか?
compareBitmap()を使用する前に、bitmapがnullでないことを確認します。ご存じのように、bitmap.sameAs()はAndroid OではFALSEを返しますが、古いAndroidバージョンではTRUEを返します – Eric