4

更新:この質問は、一部の画像は正しくデコードされ、一部の画像は正しくデコードされないことに要約されるようです。JPEG動作していないs をsに変換するとpng、動作します。、 、または電話JPEGのいずれかからとして直接取得した私の画像はどれもデコードできません。Nikon D5000Panasonic LumixSony Experia


アプリに入力Picassoするために使用しています。ただし、使用する画像のエラーが発生していますが、Web で実行している他の画像では問題なく動作します。したがって、画像と関係があると思いますが、よくわかりません。(私が知る限り)が使用するライブラリでエラーが発生します。ListViewAndroid--- decoder->decode returned falseSkiaPicasso

たとえば、この画像は正常に機能しますが、これは機能しません。私が作業する必要があるのは後者です。私が使用する必要がある他のすべての写真は、同じカメラで撮影さGimpれ、同じ方法で編集されているため、最初の画像のような画像になりますが、どれも機能しません。したがって、デコーダーではなく、画像自体に関係があると思われます。

ポップアップするいくつかの質問:

  1. このプロセスでメタデータが何かできる可能性はありますか? メタデータはすべての写真で類似しています。
  2. エンコーダーを狂わせるのは、エンコードされた画像の何かでしょうか? もしそうなら、それは何であり、どうすればそれを調査できますか? ファイルの終わりか何かがありませんか?
  3. またはからのデバッグと出力をさらに有効にすることは可能ですPicassoSkia? たとえば、スタックトレース?
  4. UTF8 以外の文字は混乱を招きますか、それとも正しく処理されますか? サンプル画像には UTF8 文字が含まれていませんが、一部の画像には含まれている可能性があります。

私が試したこと:

  1. 動作しない画像を開いて、代わりにファイルInkscapeとしてエクスポートしようとしました。現在、画像は実際に機能しているため、エンコードpngに問題があるようです。JPEG
  2. もう1つの試みは、画像を開いて再度GimpエクスポートするJPEGことでしたが、それは役に立ちませんでした.
  3. また、メタデータの有無にかかわらず、 で画像を開いて にShotwell再エクスポートしようとしましたが、これらの画像はどれも機能しません。JPEGへのエクスポートは、 へのエクスポートと同じようにpng機能しpngますInkscape
  4. 動かない画像はすべてNikon D5000カメラで撮ったものなので、スマホとカメラで何枚か撮ってみましSony ExperiaPanasonic Lumix。のいずれJPEGも直接動作しませんが、変換するPNGとすべてデコードされます。
  5. ここPicasso.Builderに示すようにオブジェクトを設定して、スタック トレースを取得しようとしました。以下にスタックトレースを貼り付けました。スタック トレースが を指しているため、実際には が失敗しているように見えるかもしれません。結局、エラーは何の関係もないのかもしれません。Android.BitmapFactory.decodeStream()com.squareup.picasso.BitmapHunter.decodeStream()Android.BitmapFactory.decodeStream()Skia
  6. 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)

getViewBaseAdapterのための私のメソッド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;
}
4

1 に答える 1