gpt4 book ai didi

java - 使用 Glide 加载 SVG 时图像尺寸太小

转载 作者:行者123 更新时间:2023-11-30 01:32:59 50 4
gpt4 key购买 nike

我正在使用 Glide加载图像。

在我的应用程序中,我使用以下示例将 SVG 图像加载到我的 ImageView 中,它位于 CardView 中。

GenericRequestBuilder<Uri, InputStream, SVG, PictureDrawable> requestBuilder;

requestBuilder = Glide.with(mContext)
.using(Glide.buildStreamModelLoader(Uri.class, mContext), InputStream.class)
.from(Uri.class)
.as(SVG.class)
.transcode(new SvgDrawableTranscoder(), PictureDrawable.class)
.sourceEncoder(new StreamEncoder())
.cacheDecoder(new FileToStreamDecoder<>(new SVGDecoder()))
.decoder(new SVGDecoder())
.placeholder(R.drawable.modulo)
.error(R.drawable.banner_error)
.animate(android.R.anim.fade_in)
.listener(new SvgSoftwareLayerSetter<Uri>());

requestBuilder
.diskCacheStrategy(DiskCacheStrategy.NONE)
.load(Uri.parse("http://foo.bar/blah"))
.into(cardHolder.iv_card);

ImageView 在 XML 中具有固定宽度 102dp 和固定高度 94dp。但是图像在加载后变得比应有的要小。我做错了什么吗?

scaleType 是:android:scaleType="fitXY"

img_20160219_155824

最佳答案

我决定将这个问题打开为 an issue on the libs repository ,然后我就能够解决问题。

事实证明,问题与我的 SVG 具有固定大小有关,因此要修复它,我必须修改我的 SvgDecoder.decode 方法,并添加以下三行:

svg.setDocumentWidth(width);
svg.setDocumentHeight(height);
svg.setDocumentPreserveAspectRatio(PreserveAspectRatio.STRETCH);

该方法现在看起来像这样:

public Resource<SVG> decode(InputStream source, int width, int height) throws IOException {
try {
SVG svg = SVG.getFromInputStream(source);

svg.setDocumentWidth(width);
svg.setDocumentHeight(height);
svg.setDocumentPreserveAspectRatio(PreserveAspectRatio.STRETCH);

return new SimpleResource<>(svg);
} catch (SVGParseException ex) {
throw new IOException("Cannot load SVG from stream.", ex);
}
}

现在它可以正常工作了。

关于java - 使用 Glide 加载 SVG 时图像尺寸太小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35512975/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com