微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

直接从 fresco 的管道中获取中心裁剪的图像

如何解决直接从 fresco 的管道中获取中心裁剪的图像

Fresco 图像库是否支持直接在管道中居中裁剪位图?

库已经支持 scale types 用于 SimpleDraweeView 控件,其方式与标准 ImageView scaleType 属性类似。然而,这些只是渲染转换,不会改变图像本身。

就我而言,我需要使用检索到的位图 directly from the pipeline,(根本没有使用 SimpleDraweeView)。而且我要求这个在获得时已经是中心裁剪的。

我知道我可以在检索后自己裁剪它并将结果缓存到库中,但这需要创建管道位图的副本。问题是该库是否已经内置了这样的功能以避免额外的分配。

解码 ResizeOptions 只会上下缩放图像,即使设置相同的宽度和高度也是如此。还有 BitmapTransformation 的选项,不幸的是,这是就地的,无法更改位图指标。

void execute(@NonNull final Context context,@NonNull final Uri uri,final int maxSize) throws Throwable
{
    final ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
            .setimageDecodeOptions(ImageDecodeOptions.newBuilder().setForceStaticImage(true).build())
            .setResizeOptions(new ResizeOptions(maxSize,maxSize))
            .build();

    final DataSource<CloseableReference<CloseableImage>> dataSource = Fresco.getimagePipeline()
            .fetchDecodedImage(request,context);

    try (final CloseableReference<CloseableImage> result = DataSources.waitForFinalResult(dataSource))
    {
        if (result != null)
        {
            final CloseableImage image = result.get();

            final Bitmap pipelineBitmap = ((CloseableBitmap)image).getUnderlyingBitmap();

            // Expected to be already center-cropped at this point
            // ....
        }
    }
    finally
    {
        dataSource.close();
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。