2010-07-03 6 views
2

Je souhaite télécharger une image depuis le réseau et la définir comme arrière-plan de l'utilisateur. Cela fonctionne bien sur le wi-fi, et certains réseaux 3G, mais d'autres (T-Mobile UK, à coup sûr) semblent compresser les images avant de les envoyer.Éviter la compression d'image sur certains réseaux 3G

Cet effet est également perceptible lors de l'utilisation du navigateur. Cependant, si vous appuyez longtemps sur une image et que vous la sauvegardez, elle n'est pas compressée ou nettement moins visible dans la galerie. Je veux être en mesure de le faire dans ma propre application. Je suppose que cela a quelque chose à voir avec les en-têtes HTTP, mais de ceux que j'ai modifiés, aucun n'a fait de différence.

Quelqu'un peut-il m'aider ici?

Question similaire ici Android: BitmapFactory.decodeByteArray gives pixelated bitmap mais n'est pas résolue.

Répondre

4

Avez-vous essayé de définir un en-tête sans cache? Cela peut fonctionner sur certains réseaux.

Vous pouvez également essayer que le client demande l'image une seconde fois, cela peut également ignorer la compression.

+2

Le réglage "Pragma: no-cache" et "Cache-Control: no-cache" semble l'avoir fait. Merci! – blork

0

Si vous avez le contrôle sur l'image que l'utilisateur télécharge, vous pouvez le placer dans un fichier ZIP contenant votre image, faire décompacter l'image et la définir comme arrière-plan. Vous êtes sûr qu'aucun réseau n'appliquera de dégradation de cette façon.

Mais bien sûr, si vous ne disposez pas de contrôle sur la galerie, l'utilisateur peut choisir, cette solution n'est pas applicable ...

+0

Malheureusement, je ne le fais pas. J'ai essayé de configurer Accept-Encoding: gzip mais le serveur n'en avait pas. – blork

2

Certains réseaux 3G compressez les images pour sauver la bande passante. Parfois, ils n'honorent même pas aucun en-tête http du cache. Pour les contourner, vous pouvez

  • base en ligne 64 votre image à l'aide de données uri
  • les servir comme https ou via un port http non standards

discussion complète à ce sujet: http://blog.sebcante.com/2012/01/prevent-image-compression-from-3g.html

1

La définition d'un en-tête no-cache a cessé de fonctionner sur certains fournisseurs comme Vodafone Allemagne il y a quelques années. À la place, ces fournisseurs proposent une interface Web dans laquelle vous pouvez ajuster les paramètres vous-même. Pour Vodafone Allemagne allez simplement au performance.vodafone.de et vous serez accueilli avec le dialogue des paramètres de base, mais vous pouvez également choisir l'option "paramètres experts" pour un contrôle plus fin et des options avancées.

Basic settings

Advanced settings

Liens pour différents fournisseurs et pays ou des listes entières sont les bienvenus beaucoup!