Есть ли способ сравнить два Bitmaps
, которые обернуты BitmapDrawable
.Android Espresso match BitmapDrawables с различным оттенком
сравнение не должно потерпеть неудачу, если размеры не совпадают, но он должен соответствовать пикселям и цвет Bitmap
Я не знаю, как родная часть Android рисует Bitmap
, sameAs
, потому что возвращается true, даже если цвет оттенка отличается.
Если размер отличается, я могу создать масштабирование Bitmap
от другого и сравнить их с.
В моем исходном коде я использую DrawableCompat.setTint
с ImageViews
Drawable
и в тестовом коде я загружаю Drawable
из ресурсов и подкрасить его таким же образом.
Любые идеи? Я хотел бы иметь тест, который проверяет источник Drawable
из ImageView
и цвет также основывается на том, если он нажат или нет.
ПРИМЕЧАНИЕ 1: Мои чертежи белые, и я использую оттенок для установки цвета. Циклические пиксели для 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 и окрашиваются при рисовании или что-то в этом роде. По этой причине сравнение пикселей между двумя растровыми изображениями не работает. – Niko