直接从 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 (将#修改为@)