Как изменить цвет изображения, загружаемого из Пикассо, с зеленого на красный - PullRequest
0 голосов
/ 05 ноября 2018

Это мой код:

backPic.setScaleType(ImageView.ScaleType.FIT_CENTER);
backPic.setColorFilter(ContextCompat.getColor(context, R.color.red), android.graphics.PorterDuff.Mode.MULTIPLY);
Picasso.with(context).load(icon).into(backPic, new com.squareup.picasso.Callback() {
    @Override
    public void onSuccess() {
    }

    @Override
    public void onError() {
        UserVehicle.setVehicleClassPic(getVclass().getId(), backPic);
    }
});

Исходное изображение таково:

enter image description here

Вот что я получаю сейчас:

enter image description here

Как я могу сделать так, чтобы мотоцикл на втором рисунке был красным, а не серым по отношению к зеленому?

Цвет, который я отправил на фильтр изображений, красный.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Используя комментарий Андре Сузы, я сделал этот код:

   Picasso.with(context).load(icon).into(backPic, new com.squareup.picasso.Callback() {
                @Override
                public void onSuccess() {
                    DrawableCompat.setTint(backPic.getDrawable(), context.getResources().getColor(R.color.red));
                }

                @Override
                public void onError() {
                    UserVehicle.setVehicleClassPic(getVclass().getId(), backPic);
                }
            });

Таким образом, он установит оттенок после загрузки изображения Пикассо, что работает

0 голосов
/ 05 ноября 2018

пожалуйста, прочитайте здесь:

проблема в этой строке:

  backPic.setColorFilter(ContextCompat.getColor(context, R.color.red), 
  android.graphics.PorterDuff.Mode.MULTIPLY);

в частности:

  PorterDuff.Mode.MULTIPLY

Вы хотите:

 PorterDuff.Mode.DST

Я верю. но если вы прочитаете предоставленные мною документы, вы увидите, что делают разные режимы. просто помните, когда вы математически раскрашиваете, они делают забавные вещи. умножение зеленого и красного дает вам этот яркий фанк, режим ADD был бы моим первым выбором, но это даст вам фанк коричневый. DST заменяет старый пиксель новыми, не давая ему смешивать цвета.

удачи!

...