有沒有辦法比較兩個Bitmaps
是由BitmapDrawable
包裹。Android咖啡比賽BitmapDrawables與不同的色調
如果尺寸不匹配的比較應該不會失敗,但它應該匹配像素和的Bitmap
我不知道的Android的原生部分如何繪製Bitmap
,因爲sameAs
返回顏色即使色調不同,也是如此。
如果大小不同,我可以從另一個創建縮放Bitmap
,並將它們進行比較。
在我的源代碼我使用DrawableCompat.setTint
與ImageViews
Drawable
,並在測試代碼中,我從資源加載Drawable
和色調也同樣如此。
任何想法?我想要進行測試,驗證ImageView
的來源Drawable
,並根據是否按下該顏色來確定顏色。
注1:我的drawable是白色的,我使用tint來設置顏色。對於Bitmaps
而言,循環像素不起作用,因爲它們在那時是白色的,很可能Android本地端在繪製時使用色調顏色。
注2:使用compile 'com.android.support:palette-v7:21.0.0'
和Palette.from(bitmap).generate();
並沒有幫助,因爲返回的調色板有0色板所以不能得到任何顏色信息存在。
這是我目前匹配:
public static Matcher<View> withDrawable(final Drawable d) {
return new BoundedMatcher<View, ImageView>(ImageView.class) {
@Override
public boolean matchesSafely(ImageView iv) {
if (d == null) {
return iv.getDrawable() == null;
} else if (iv.getDrawable() == null) {
return false;
}
if (d instanceof BitmapDrawable && iv.getDrawable() instanceof BitmapDrawable) {
BitmapDrawable d1 = (BitmapDrawable) d;
BitmapDrawable d2 = (BitmapDrawable) iv.getDrawable();
Bitmap b1 = d1.getBitmap();
Bitmap b2 = d2.getBitmap();
return b1.sameAs(b2);
}
return iv.getDrawable().getConstantState().equals(d.getConstantState());
}
@Override
public void describeTo(Description description) {
description.appendText("with drawable: ");
}
};
}
感謝。
比較似乎是完全相同的,我使用Bitmap.sameAs,我不明白爲什麼它是兩個不同顏色的BitmapDrawables。 – Niko
看看這裏http://stackoverflow.com/questions/6120439/comparing-bitmap-images-in-android。第一個答案給你一個小費如何獲得顏色。也許這就是你要找的。 – denys
我的資產是白色的,而且我使用着色,所以Android的本地方似乎也將Bitmap像素保留爲白色,並在繪圖或其他類似情況下着色。這兩個Bitmaps之間的像素比較不起作用。 – Niko