【问题标题】:How to set up progressive jpegs using fresco in android如何在 android 中使用 fresco 设置渐进式 jpeg
【发布时间】:2016-11-05 16:20:01
【问题描述】:

我刚刚开始使用 fresco,并按照他们文档中的步骤进行操作。我已经能够将 URI 加载到我的 listview 适配器中的 SimpleDraweeView 中,现在我正在尝试实现渐进式 jpeg(图像在加载时质量会提高)。问题是他们在网站上提供的代码没有按预期工作。 Uri 正在加载,但不是渐进式的(加载时图像的质量不会逐渐提高)。有什么我遗漏或忘记添加的吗?

这是我的构建依赖:

compile 'com.facebook.fresco:fresco:0.13.+'

我已经在我的应用程序类中添加了这个:

//For fresco
 Fresco.initialize(this);

这是我的 xml

<com.facebook.drawee.view.SimpleDraweeView
                android:id="@+id/tag_iv_tu"
                android:layout_width="@dimen/tu_tag_side"
                android:layout_height="@dimen/tu_tag_height"
                android:layout_centerInParent="true"
                android:layout_gravity="center_horizontal"
                fresco:placeholderImage="@drawable/abc_ic_menu_share_mtrl_alpha" />

这是我的 listview 适配器中 getView() 方法中的代码

ImageRequest request = ImageRequestBuilder.newBuilderWithSource(fileUri)
                            .setProgressiveRenderingEnabled(true)
                            .build();
                    DraweeController controller = Fresco.newDraweeControllerBuilder()
                            .setImageRequest(request)
                            .setOldController(holder.tag_iv_tu.getController())
                            .build();
                    holder.tag_iv_tu.setController(controller);

【问题讨论】:

    标签: android facebook fresco


    【解决方案1】:

    您必须为 ImageRequst 设置 ResizeOption,因为逐渐依赖于 ResizeOptions。

    试试这个:

    ResizeOptions options = new ResizeOptions(width, height);
    
    ImageRequest request = ImageRequestBuilder
                .newBuilderWithSource(Uri.parse(uri))
                .setProgressiveRenderingEnabled(true).setResizeOptions(options)
                .build();
    

    【讨论】:

    • 谢谢,它可以工作,但有什么办法可以让它开始模糊,然后像 instagram 那样慢慢提高质量?
    • @PatriceAndala,你有没有找到用渐进式 jpeg 做模糊处理的方法?
    • 没有,还在等待答复
    • @PatriceAndala 我认为您的 jpeg 需要支持这一点。在GIMP 中有一个选项,您可以在其中导出具有渐进式加载功能的 jpeg。
    【解决方案2】:

    使用此代码:

            String url ="http://...";
            Uri uri = Uri.parse(url);
    
            ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
                    .setProgressiveRenderingEnabled(true)
                    .build();
    
            DraweeController controller = Fresco.newDraweeControllerBuilder()
                    .setImageRequest(request)
                    .setOldController(image.getController())
                    .build();
    
            mSimpleDraweeView.setController(controller);
    

    【讨论】:

      猜你喜欢
      • 2016-01-14
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-03
      相关资源
      最近更新 更多