- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
更新:这个问题似乎可以归结为一些图像被正确解码,而另一些则没有。如果我将不工作的 JPEG
转换为 png
,它们就可以工作。我的所有图像都不是直接从 Nikon D5000
、Panasonic Lumix
或 Sony Experia
拍摄的 JPEG
手机可以解码。
我正在使用 Picasso
在我的 Android
应用程序中填充一个 ListView
。但是,对于我要使用的图像,我遇到了错误 --- decoder->decode returned false
,但它对我在网络上运行的其他图片工作正常。因此,我相信它与图像有关,但我不确定。错误出现在 Picasso
使用的 Skia
库中(据我所知)。
例如,this 图像可以正常工作,而 this 则不能,而我需要处理的是后者。我需要使用的所有其他图片都是用同一台相机拍摄的,并由 Gimp
以相同的方式编辑,生成的图像与第一张类似,但没有一张有效。因此,我怀疑它与图像本身有关,而不是与解码器有关。
弹出的几个问题:
Picasso
或 Skia
启用更多调试和输出?例如,堆栈跟踪?我尝试过的:
Inkscape
中打开一个无效图像并将其导出为 png
文件。现在,图像确实有效了,所以似乎有一些使用 JPEG
编码的东西。Gimp
中打开图像并再次导出为 JPEG
,但这没有帮助。Shotwell
中打开图像并重新导出为 JPEG
,包括元数据和不包括元数据,但这些图像都不起作用。导出为 png
与从 Inkscape
导出为 png
一样。Nikon D5000
相机拍摄的,所以我尝试用 Sony Experia
手机和 Panasonic Lumix 拍摄一些图像
相机。 JPEG
都不能直接工作,但如果转换为 PNG
,它们都会被解码。Picasso.Builder
对象,如 here 所示,以获取堆栈跟踪。我在下面粘贴了堆栈跟踪。看起来它实际上是 Android.BitmapFactory.decodeStream()
失败了,因为堆栈跟踪指向 com.squareup.picasso.BitmapHunter.decodeStream()
,它利用了 Android.BitmapFactory.decodeStream()
。所以也许这个错误毕竟与 Skia
无关。Imagemagick
的 identify -verbose
并比较了输出。我找不到任何突出的差异,所以它没有给我带来任何进一步的影响。示例 Logcat 输出:
D/Picasso(528): Main created [R0] Request{http://www.miasmat.no/wp-content/uploads/2015/05/OvnsbaktKveite9.jpg}
D/Picasso(528): Dispatcher enqueued [R0]+7ms
D/Picasso(528): Main created [R1] Request{http://www.miasmat.no/wp-content/uploads/2015/05/OvnsbaktKveite9.jpg}
D/Picasso(528): Hunter joined [R1]+1ms to [R0]+10ms, [R1]+1ms
D/Picasso(528): Main created [R2] Request{http://www.miasmat.no/wp-content/uploads/2015/05/OvnsbaktKveite9.jpg}
D/Picasso(528): Hunter joined [R2]+1ms to [R0]+14ms, [R1]+5ms, [R2]+2ms
D/Picasso(528): Hunter executing [R0]+21ms, [R1]+12ms, [R2]+9ms
D/skia(528): --- decoder->decode returned false
D/Picasso(528): Dispatcher retrying [R0]+1456ms, [R1]+1447ms, [R2]+1444ms
D/Picasso(528): Hunter executing [R0]+1458ms, [R1]+1448ms, [R2]+1445ms
D/skia(528): --- decoder->decode returned false
D/Picasso(528): Dispatcher retrying [R0]+2867ms, [R1]+2857ms, [R2]+2854ms
D/Picasso(528): Hunter executing [R0]+2868ms, [R1]+2859ms, [R2]+2855ms
D/skia(528): --- decoder->decode returned false
D/Picasso(528): Dispatcher batched [R0]+3406ms, [R1]+3397ms, [R2]+3394ms for error
D/dalvikvm(249): GC_EXPLICIT freed 119 objects / 5288 bytes in 28ms
I/TAGZ(528): Error! url = http://www.miasmat.no/wp-content/uploads/2015/05/OvnsbaktKveite9.jpg
D/Picasso(528): Main errored [R0]+3607ms
I/TAGZ(528): Error! url = http://www.miasmat.no/wp-content/uploads/2015/05/OvnsbaktKveite9.jpg
D/Picasso(528): Main errored [R1]+3598ms
I/TAGZ(528): Error! url = http://www.miasmat.no/wp-content/uploads/2015/05/OvnsbaktKveite9.jpg
D/Picasso(528): Main errored [R2]+3596ms
D/Picasso(528): Dispatcher delivered [R0]+3610ms, [R1]+3601ms, [R2]+3598ms
来自 Picasso
的堆栈跟踪,指向 this 文件。
W/System.err(1467): java.io.IOException: Failed to decode stream.
W/System.err(1467): at com.squareup.picasso.BitmapHunter.decodeStream(BitmapHunter.java:145)
W/System.err(1467): at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:217)
W/System.err(1467): at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:159)
W/System.err(1467): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
W/System.err(1467): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
W/System.err(1467): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
W/System.err(1467): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
W/System.err(1467): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
W/System.err(1467): at java.lang.Thread.run(Thread.java:1096)
W/System.err(1467): at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:411)
ListView
的
BaseAdapter
中的
getView
方法:
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
final View view;
Recipe recipe = this.getItem(position);
if (convertView != null){
view = convertView;
view.setTag(recipe.getId());
}
else{
view = myActivity.getLayoutInflater().inflate(R.layout.recipe_item, parent, false);
view.setTag(recipe.getId());
}
ImageView imageView = (ImageView) view.findViewById(R.id.filtered_recipes_list_image_view);
// final String foo = "https://cms-assets.tutsplus.com/uploads/users/21/posts/19431/featured_image/CodeFeature.jpg";
final String foo = "http://www.miasmat.no/wp-content/uploads/2015/05/OvnsbaktKveite9.jpg";
Picasso.with(myActivity).setIndicatorsEnabled(true);
Picasso.with(myActivity).setLoggingEnabled(true);
Picasso.with(myActivity).load(foo).into(imageView, new Callback() {
@Override
public void onSuccess() {
Log.i("TAGZ", "Success! url = " + foo);
}
@Override
public void onError() {
Log.i("TAGZ", "Error! url = " + foo);
}
});
return view;
}
最佳答案
出现该错误的原因是:您尝试设置的图像尺寸大于 ImageView 布局尺寸。
我找到了一个简单的解决方案!如果您正在使用 picasso 库加载图像……那么,请调整图像大小以适合您的 ImageView 布局。
也就是说,我是这样做的:
Picasso.with(ImageLoaderActivity.this)
.load("https://static.pexels.com/photos/34578/pexels-photo.jpg")
.resize(200,250)
.into(img);
关于android - picasso 无法解码某些图像 : skia decode returned false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30952980/
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我正在 Windows 上构建 Skia,关注 this link . 对于 Windows x64,构建非常顺利。但不适用于 32 位。 1) 我尝试指定 target_cpu = "x86"而不是
我在使用 skia measureText() 函数测量文本时遇到问题。返回值不准确。 SkPaint *skPaint = new SkPaint(); SkTypeface* myFont = S
我有一个 draw(SkCanvas* canvas) 函数。 在 main() 中我写: SkBitmap myBitmap; myBitmap.allocN32Pixels(640, 480);
我正在尝试打开 JPEG 图像的远程流并将其转换为位图对象: BitmapFactory.decodeStream( new URL("http://some.url.to/source/im
你好, 我目前正在研究Android如何解码和图像文件。当我检查代码时,它似乎在调用 SKIA 库。但是,如何根据源码知道android/skia支持的图片文件格式是什么? 我不是编程专家,所以我还在
本页http://source.android.com/devices/graphics.html说: Prior to Android 3.0, Canvas used the Skia 2D dr
我尝试按照 https://skia.org/user/build 中的建议在 Windows 上编译skia 1> bin/gn gen out/Static --args='is_official
我想弄清楚如何让 Skia 从路径几何中生成网格。我查了 SkPath::dump , SkPath::writeToMemory , SkPath::serialize ,但是它们似乎都输出路径内容
我正在尝试使用 Xamarin.forms 中的 SkiaSharp 在图像上绘制一些多边形。图片是从服务器下载的,然后缓存在后台。所以我宁愿不操纵图像本身,而是绘制一个新 Canvas 并将其放置在
我正在尝试使用 Skia Windows 上的图形库需要 building it from source .但是,当我运行构建命令时: ninja -C out/Static 我得到这个构建错误: "
我正在尝试使用 Linux 构建 SKIA 库: https://code.google.com/p/skia/ 我已成功运行 ./gyp_skia 后跟 make 命令。 您经常在make 之后运行
我正在处理一个必须在位图上快速绘制文本的应用程序。我已经对渲染过程的内存使用进行了相当多的优化,但我仍然希望该过程尽可能快,那时我了解到 Skia 库,有人说它可以提供比原生 Android canv
我将 Skia 用于我的示例程序之一。我有一个 Canvas ,我在其中使用 font_size 30 编写文本,这是代码片段。 string = "Test String"; SkString t
这是我的一个与远程浏览器隔离相关的实验项目。我正在尝试拦截 Skia在正在运行的 Chromium 实例中绘制命令,然后通过 CanvasKit 在客户端的不同浏览器实例中重放它们,Skia 的 We
因此,我从 Google SIgn-in api 下载个人资料图片,并将其保存到隐藏文件中。问题是,当我尝试检索它时,它会抛出:D/skia: --- 无法创建带有消息“未实现”的图像解码器。但是,当
为什么 Skia包括 Forth interpreter ? 最佳答案 Forth 解释器包含最初是一种调用 Skia 的迷你脚本语言。 迈克·里德,software engineer and man
我想使用 SkiaSharp 绘制富文本,例如 iOS 的属性文本或 Xamarin.Forms 的 FormattedString,但我找不到方法。 我找到了 DrawText 方法,但它用于使用一
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
我正在设计一个显示一些图像的 Activity 。下面的代码获取图像文件并将它们放入屏幕。 for(int i=0;idecode returned false 06-2
我是一名优秀的程序员,十分优秀!