更新:この質問は、一部の画像は正しくデコードされ、一部の画像は正しくデコードされないことに要約されるようです。JPEG
動作していないs をsに変換するとpng
、動作します。、 、または電話JPEG
のいずれかからとして直接取得した私の画像はどれもデコードできません。Nikon D5000
Panasonic Lumix
Sony Experia
アプリに入力Picasso
するために使用しています。ただし、使用する画像のエラーが発生していますが、Web で実行している他の画像では問題なく動作します。したがって、画像と関係があると思いますが、よくわかりません。(私が知る限り)が使用するライブラリでエラーが発生します。ListView
Android
--- decoder->decode returned false
Skia
Picasso
たとえば、この画像は正常に機能しますが、これは機能しません。私が作業する必要があるのは後者です。私が使用する必要がある他のすべての写真は、同じカメラで撮影さGimp
れ、同じ方法で編集されているため、最初の画像のような画像になりますが、どれも機能しません。したがって、デコーダーではなく、画像自体に関係があると思われます。
ポップアップするいくつかの質問:
- このプロセスでメタデータが何かできる可能性はありますか? メタデータはすべての写真で類似しています。
- エンコーダーを狂わせるのは、エンコードされた画像の何かでしょうか? もしそうなら、それは何であり、どうすればそれを調査できますか? ファイルの終わりか何かがありませんか?
- またはからのデバッグと出力をさらに有効にすることは可能です
Picasso
かSkia
? たとえば、スタックトレース? - UTF8 以外の文字は混乱を招きますか、それとも正しく処理されますか? サンプル画像には UTF8 文字が含まれていませんが、一部の画像には含まれている可能性があります。
私が試したこと:
- 動作しない画像を開いて、代わりにファイル
Inkscape
としてエクスポートしようとしました。現在、画像は実際に機能しているため、エンコードpng
に問題があるようです。JPEG
- もう1つの試みは、画像を開いて再度
Gimp
エクスポートするJPEG
ことでしたが、それは役に立ちませんでした. - また、メタデータの有無にかかわらず、 で画像を開いて に
Shotwell
再エクスポートしようとしましたが、これらの画像はどれも機能しません。JPEG
へのエクスポートは、 へのエクスポートと同じようにpng
機能しpng
ますInkscape
。 - 動かない画像はすべて
Nikon D5000
カメラで撮ったものなので、スマホとカメラで何枚か撮ってみましSony Experia
たPanasonic Lumix
。のいずれJPEG
も直接動作しませんが、変換するPNG
とすべてデコードされます。 - ここ
Picasso.Builder
に示すようにオブジェクトを設定して、スタック トレースを取得しようとしました。以下にスタックトレースを貼り付けました。スタック トレースが を指しているため、実際には が失敗しているように見えるかもしれません。結局、エラーは何の関係もないのかもしれません。Android.BitmapFactory.decodeStream()
com.squareup.picasso.BitmapHunter.decodeStream()
Android.BitmapFactory.decodeStream()
Skia
Imagemagick
また、動作中の画像と動作していない画像で'sを使用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
を指しているからのスタック トレース。
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)
getView
BaseAdapter
のための私のメソッドListView
:
@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;
}