BitmapFactory.decodeStream renvoie toujours null et skia décodeur montre décoder retourné false
image de test ici:
http://images.plurk.com/tn_4134189_bf54fe8e270ce41240d534b5133884ee.gif
J'ai essayé plusieurs solutions trouvées sur internet, mais il n'y a pas de solution de travail.
Je suis en utilisant le fragment de code suivant code:
Url imageUrl = new Url("http://images.plurk.com/tn_4134189_bf54fe8e270ce41240d534b5133884ee.gif");
Bitmap image = BitmapFactory.decodeStream(imageUrl.openStream());
Toujours obtenir ce journal:
DEBUG/skia(1441): --- decoder->decode returned false
De l'aide?
Merci.
EDIT:
Ces images n'a pas pu être décodé sont également ne peut pas être montré sur un WebView
. Mais il peut voir si elle est ouverte dans un Navigateur.
OriginalL'auteur shiami | 2010-09-27
Vous devez vous connecter pour publier un commentaire.
Essayer cela comme une solution temporaire:
D'abord ajouter la classe suivante:
Puis enveloppez votre flux d'origine avec PlurkInputStream:
Laissez-moi savoir si cela vous aide.
EDIT:
Désolé, s'il vous plaît essayer la version suivante à la place:
Noter que ce n'est pas un code efficace, et ce n'est pas un full/solution correcte. Il va travailler pour la plupart des cas, mais pas tous.
Je suis curieux de savoir pourquoi vous substituez la méthode pour cela?
Android skia décodeur ne un soi-disant TopLeft vérifier sur gif dimensions et ne gère pas les images qui sortent de la toile de limites. En surchargeant la méthode de lecture, nous sommes en remplaçant le dessin décalage par rapport à la toile à zéro et de tromper le skia décodeur pour accepter le fichier gif pour de plus amples décodage. Vous pouvez regarder dans le skia code source d'Android et ne bvi un check sur les images à l'encontre de la GIF89a spec.
Btw, vous pouvez vous assurer que vous utilisez la PlurkInputStream wrapper uniquement pour les images de images.plurk.com.
Qu'entendez-vous par "Btw, vous pouvez vous assurer que vous utilisez la PlurkInputStream wrapper uniquement pour les images de images.plurk.com." et qu'est-ce que le "full/solution correcte" version?
OriginalL'auteur Wu-Man
J'ai eu le même problème, en partie a été fixé par cette classe:
}
Et:
Il a aidé dans la plupart des cas, mais ce n'est pas la solution universelle.
De plus, référez-vous à cette rapport de bogue.
Bonne chance!
OriginalL'auteur Patrick
J'ai essayé toutes les solutions, mais n'a pas résolu mon problème. Après quelques tests, le problème de skia décodeur défaut est passé beaucoup lorsque la connexion internet n'est pas stable. Pour moi, obligeant à re-télécharger l'image a résolu le problème.
Le problème a également présenté plus lorsque l'image est de grande taille.
À l'aide d'une boucle m'a obligé à plus de 2 tentatives et l'image sera téléchargée correctement.
OriginalL'auteur EhTd
Cela devrait fonctionner:
myBitmap contient votre image.
OriginalL'auteur Keenora Fluffball
cela est dû à un bogue dans la classe InputStream dans Android.
Vous pouvez trouver une solution valable et une description du bug ici http://code.google.com/p/android/issues/detail?id=6066
OriginalL'auteur yann.debonnel
Pour mémoire raisons, vous devez être implémente BitmapFactory options comme ceci:
Les principaux télécharger bitmap fonction peut-être comme ceci:
Et peut-être vous devez être implémente AsyncTask comme ceci:
http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html
OriginalL'auteur Hpsaturn
Pour moi le problème est avec le type de couleur de l'image: votre image est en couleur=CYMK pas en RVB
OriginalL'auteur lucasddaniel
Peut-être que ce n'est pas votre cas, mais il pourrait l'être si vous essayez de décoder les images CMJN couleur, à la place de l'espace de couleurs RVB. Les images CMJN, comme cette une, ne sont pas pris en charge par Android, et ne sera pas affiché dans le navigateur web d'Android. En savoir plus sur ce ici:
Impossible de charger le JPEG-image avec BitmapFactory.decodeFile. Renvoie la valeur null
OriginalL'auteur Mario Velasco
Essayez ceci:
OriginalL'auteur Vikas