gpt4 book ai didi

android - Skia 解码器无法解码远程流

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:19:13 26 4
gpt4 key购买 nike

我正在尝试打开 JPEG 图像的远程流并将其转换为位图对象:

    BitmapFactory.decodeStream(
new URL("http://some.url.to/source/image.jpg")
.openStream());

解码器返回 null,在日志中我收到以下消息:

DEBUG/skia(xxxx): --- decoder->decode returned false

注意:
1. 内容长度非零且内容类型为image/jpeg
2. 当我在浏览器中打开 URL 时,我可以看到图像。

我在这里缺少什么?

请帮忙。谢谢。

最佳答案

android bug n°6066中提供的解决方案包括覆盖标准 FilterInputStream,然后将其发送到 BitmapFactory。

static class FlushedInputStream extends FilterInputStream {
public FlushedInputStream(InputStream inputStream) {
super(inputStream);
}

@Override
public long skip(long n) throws IOException {
long totalBytesSkipped = 0L;
while (totalBytesSkipped < n) {
long bytesSkipped = in.skip(n - totalBytesSkipped);
if (bytesSkipped == 0L) {
int byteValue = read();
if (byteValue < 0) {
break; // we reached EOF
} else {
bytesSkipped = 1; // we read one byte
}
}
totalBytesSkipped += bytesSkipped;
}
return totalBytesSkipped;
}
}

然后使用decodeStream函数:

Bitmap bitmap = BitmapFactory.decodeStream(new FlushedInputStream(inputStream));

我发现的另一个解决方案是简单地将 BufferedInputStream 提供给 BitmapFactory:

Bitmap bitmap = BitmapFactory.decodeStream(new BufferedInputStream(inputStream));

这两个解决方案应该可以解决问题。

更多信息可以在错误报告评论中找到:android bug no.6066

关于android - Skia 解码器无法解码远程流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2787015/

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