Как размыть изображение с помощью Пикассо?

Если вы похожи на меня, когда я впервые начал использовать Java, я хотел использовать оператор «==» для проверки того, были ли два экземпляра String одинаковыми, но к лучшему или худшему это не правильный способ сделать это в Java.

В этом уроке я продемонстрирую несколько разных способов правильно сравнить строки Java, начиная с подхода, который я использую большую часть времени. В конце этого руководства по сопоставлению Java String я также обсужу, почему оператор «==» не работает при сравнении строк Java.

Вариант 1: Сравнение строк Java с методом equals Большая часть (возможно, в 95% случаев). Я сравниваю строки с методом equals класса Java String следующим образом:

if (string1.equals(string2))

Этот метод String равен методу для двух строк Java, и если они содержат точно такую ​​же строку символов, они считаются равными.

Взглянув на быстрый пример сравнения строк с методом equals, если был выполнен следующий тест, две строки не будут считаться равными, поскольку символы не являются точно такими же (случай символов различен):

String string1 = "foo";
String string2 = "FOO";

if (string1.equals(string2))
{
    // this line will not print because the
    // java string equals method returns false:
    System.out.println("The two strings are the same.")
}

Но, когда две строки содержат одну и ту же строку символов, метод equals вернет true, как в этот пример:

String string1 = "foo";
String string2 = "foo";

// test for equality with the java string equals method
if (string1.equals(string2))
{
    // this line WILL print
    System.out.println("The two strings are the same.")
}

Вариант 2: Сравнение строк с методом equalsIgnoreCase

В некоторых строковых сравнительных тестах вы захотите игнорируйте, являются ли строки строчными или строчными. Если вы хотите проверить свои строки на равенство в этом случае нечувствительным образом, используйте метод equalsIgnoreCase класса String, например:

String string1 = "foo";
String string2 = "FOO";

 // java string compare while ignoring case
 if (string1.equalsIgnoreCase(string2))
 {
     // this line WILL print
     System.out.println("Ignoring case, the two strings are the same.")
 }

Вариант 3: сравнение строк Java с методом compareTo

Существует также третий, менее распространенный способ сравнения строк Java, и это с методом сравнения String класса. Если две строки точно совпадают, метод compareTo вернет значение 0 (ноль). Ниже приведен краткий пример того, как выглядит этот метод сравнения строк:

String string1 = "foo bar";
String string2 = "foo bar";

// java string compare example
if (string1.compareTo(string2) == 0)
{
    // this line WILL print
    System.out.println("The two strings are the same.")
}

Пока я пишу об этой концепции равенства в Java, важно отметить, что язык Java включает в себя метод equals в базовый класс Java Object. Всякий раз, когда вы создаете свои собственные объекты, и вы хотите предоставить средства для проверки того, являются ли два экземпляра вашего объекта «равными», вы должны переопределить (и реализовать) этот метод equals в своем классе (точно так же, как язык Java предоставляет это равенство / сравнение в методе String равно).

Вы можете посмотреть на это ==, .equals (), compareTo () и compare ()

0
задан sembozdemir 10 March 2019 в 07:55
поделиться

2 ответа

Пикассо

Для использования Пикассо выполните следующие действия:

Шаг 1

Добавьте эти зависимости в Gradle:

repositories {
    jcenter()
}

dependencies {
    compile 'jp.wasabeef:picasso-transformations:2.2.1'
    // If you want to use the GPU Filters
    compile 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1'
}

Шаг 2

Установите преобразование Пикассо:

Picasso.get()
       .load(currentEvent.posterDownloadPath)
       .transform(new BlurTransformation(mContext, 25, 1))
       .into(recommendedEventViewHolder.blurryImageView);

в kotlin следующим образом:

Picasso.get()
           .load(currentEvent.posterDownloadPath)
           .transform(BlurTransformation(mContext, 25, 1))
           .into(recommendedEventViewHolder.blurryImageView)

Также вы можете использовать Blurry . Blurry - это простая библиотека размытия для Android. Но я предлагаю Фреско . Fresco - это мощная система отображения изображений в приложениях для Android.

Fresco

Для использования Fresco выполните следующие действия:

Шаг 1: Создайте проект Android и добавьте Зависимость библиотеки fresco от build.gradle модуля и проекта синхронизации.

dependencies {
implementation 'com.facebook.fresco:fresco:1.13.0'
implementation 'jp.wasabeef:fresco-processors:2.1.0'
}

Шаг 2: Инициализируйте фреску в методе onCreate () MainActivity.java или Application.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //initialize fresco
    Fresco.initialize(this);
    setContentView(R.layout.activity_main);

}

Шаг 3: Внутри your activity_main.xml добавить SimpleDraweeView, который предоставляется библиотекой Fresco.

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/sdv_image"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:src="@mipmap/ic_launcher" />

Шаг 4: Прежде чем писать код для размытия изображения, вы должны позаботиться о трех основных классах.

i.Postprocessor: - Определите качество размытия для вашего изображения.

ii.ImageRequest: -Создать запрос для контроллера с использованием экземпляра Postprocessor.

iii.PipelineDraweeController: -Подготовить контроллер для просмотра с использованием экземпляра ImageRequest и SimpleDraweeView.

Шаг 5: Внутри вашего основного класса деятельности создайте экземпляр BlurPostprocessor с контекстом и радиусом, где радиус относится к проценту размытости вашего изображения.

Postprocessor postprocessor = new BlurPostprocessor(this,50);

Шаг 6: Класс ImageRequest Создайте запрос изображения со свойством размытия, удерживаемым экземпляром Postprocessor.

 ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.parse("image url"))
        .setPostprocessor(postprocessor)
        .build();

Шаг 7: Создайте новый экземпляр PipelineDraweeController, используя imagerequest и старый simpleDraweeView.

controller = (PipelineDraweeController) Fresco.newDraweeControllerBuilder()
        .setImageRequest(imageRequest)
        .setOldController(simpleDraweeView.getController())
        .build();

Шаг 8: Передать контроллер в simpleDraweeView.

simpleDraweeView.setController(controller);

Вот и все, теперь создайте и запустите приложение.

Наслаждайся этим:)

0
ответ дан Masoud Mokhtari 10 March 2019 в 07:55
поделиться

Этот код работает для меня: оба преобразования взяты из wasabeef lib

 SketchFilterTransformation transformation  = new SketchFilterTransformation(this);

 BlurTransformation transformation1 = new BlurTransformation(this);

 Picasso.get()
        .load(mImageUri)
        .transform(transformation)
        .transform(transformation1)
        .rotate(decodeRotation(orientation))
        .into((ImageView) findViewById(R.id.image));

URI - это данные средства выбора файлов.

У меня есть это в моем билде сборки:

 implementation 'com.squareup.picasso:picasso:2.71828'
 implementation 'jp.wasabeef:picasso-transformations:2.2.1'
 // If you want to use the GPU Filters
 implementation 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1'
0
ответ дан Rohit Singh 10 March 2019 в 07:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: