Уменьшение изображения с помощью Fresco

Я разрабатываю экран галереи, чтобы пользователь мог выбирать некоторые изображения с устройства и отправлять их другому пользователю. Я использую Fresco для загрузки изображений, но, в зависимости от устройства, изображения загружаются очень медленно, и прокрутка на экране тоже медленная.

Изначально я загружал изображение таким образом:

Uri uriPhoto = Uri.parse("file://" + photoGallery.imageUri);
holder.draweeView.setImageURI(uriPhoto);

Затем я нашел setResizeOptions():

Uri uriPhoto = Uri.parse("file://" + photoGallery.imageUri);

ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uriPhoto)
        .setResizeOptions(new ResizeOptions(60, 60))
        .build();
PipelineDraweeController controller = (PipelineDraweeController) Fresco.newDraweeControllerBuilder()
        .setOldController(holder.draweeView.getController())
        .setImageRequest(request)
        .build();

holder.draweeView.setController(controller);

Это работает, но, как говорится в документации:

Это замедлит ваши декодирования и, возможно, остальную часть вашего приложения, так как оно сильно загружает процессор.

Результат не тот, что я, как пользователь, ожидаю.

Кто-нибудь знает, как решить эту проблему?

Спасибо!


person rsicarelli    schedule 29.12.2015    source источник
comment
что вы подразумеваете под Результат не тот, что я, как пользователь, ожидаю.?   -  person Blackbelt    schedule 29.12.2015
comment
@Blackbelt на некоторых устройствах с хорошей камерой (например) изображения очень большие. В этом случае даже мощные устройства тоже начинают тормозить. Не слишком много, но если я делаю быструю прокрутку, это не гладко   -  person rsicarelli    schedule 29.12.2015
comment
хорошо, я бы использовал setDownsampleEnabled вместо setResizeOptions. Согласно документу, это должно быть намного эффективнее   -  person Blackbelt    schedule 29.12.2015
comment
@Blackbelt Но я должен сделать это в своем Application, верно?   -  person rsicarelli    schedule 29.12.2015
comment
это должен быть метод конвейера   -  person Blackbelt    schedule 29.12.2015
comment
@Blackbelt, можешь показать мне пример? Я только узнал в документации, как это сделать на Application   -  person rsicarelli    schedule 29.12.2015
comment
Я столкнулся с той же проблемой. setResizeOptions работает только для jpeg, даже не для png, не говоря уже о gif. Мое решение - сжать растровое изображение. Но после сжатия я не знаю, как показать его с помощью Fresco. Я хочу использовать кеш Fresco.   -  person Allen Vork    schedule 28.04.2016


Ответы (1)


Как уже отмечалось, включение понижения частоты дискретизации должно повысить производительность. Вы действительно должны сделать это во время запуска приложения или активности.

Есть ли причина, по которой это не работает для вас?

person tyronen    schedule 04.01.2016