none
Image, BitmapImage, WritableImage, Stream, byte[], Webrequest ... télécharger une image ? RRS feed

  • Question

  • Bonjour, je viens vers vous car je suis un peu paumé... :S

    Je souhaiterais télécharger une image provenant d'internet, l'afficher sur une page, et éventuellement pouvoir la stocker dans l'isolated storage ou dans la librairie.

    Mais je suis un peu paumé parmis tous ces types : Image, BitmapImage, WritableImage, Stream, byte[]
    Et sur le maniement du webrequest aussi... (en supposant que ça soit lui qui soit concerné pour télécharger une image avant de l'afficher)

    Merci beaucoup

    jeudi 15 septembre 2011 17:43

Réponses

  • WebRequest est un peu compliqué a prendre en main, utiliser WebClient.DownloadDataAsync pour commencer ;)

     

     

    Sinon :

     

    Image : l'objet d'interface, au meme titre qu'un button, d'un grid ou d'une checkbox, c'est un élément visuel

    BitmaImage : représente une donnée image (en gros une classe qui contient tous les pixels de ton image)

    WriteableBitmap : un associé à BitmapImage qui te permet de l'éditer, changer des pixels, etc...

    Stream : un flux de données, que ce soit du binaire, du texte, en local, sur le web, c'est un flux

    byte[] : un tableau d'octets

     

    donc l'arbre genealogique ressemblerait à 

     

    Image   WriteableBitmap

    BitmapImage

    Stream

    byte[] 

     

    voila !


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue
    • Proposé comme réponse Ciprian Duduiala lundi 19 septembre 2011 07:06
    • Marqué comme réponse Neo33ASM lundi 19 septembre 2011 13:48
    vendredi 16 septembre 2011 14:27
    Modérateur
  • Tu as plusieurs possibilités pour ça.


    La première est d'afficher ton image dans un contrôle Image en settant sa propriete Source (tres pratique pour tirer partie des differentes options de creation offertes sous Mango). Pour sauvegarder ton image par la suite, tu crees un WirteableBitmapImage a partir de ton controle Image que tu peux convertir en byte[] pour le stocker dans l'IsolatedStorage.

    La deuxieme solution est de telecharger ton image manuellement avec WebClient.OpenReadAsync. A partir du Stream tu peux ensuite creer un BitmapImage ou alors creer un byte[] et le mettre dans l'IsolatedStorage.

    • Proposé comme réponse Ciprian Duduiala lundi 19 septembre 2011 07:06
    • Marqué comme réponse Neo33ASM lundi 19 septembre 2011 13:49
    vendredi 16 septembre 2011 17:10

Toutes les réponses

  • WebRequest est un peu compliqué a prendre en main, utiliser WebClient.DownloadDataAsync pour commencer ;)

     

     

    Sinon :

     

    Image : l'objet d'interface, au meme titre qu'un button, d'un grid ou d'une checkbox, c'est un élément visuel

    BitmaImage : représente une donnée image (en gros une classe qui contient tous les pixels de ton image)

    WriteableBitmap : un associé à BitmapImage qui te permet de l'éditer, changer des pixels, etc...

    Stream : un flux de données, que ce soit du binaire, du texte, en local, sur le web, c'est un flux

    byte[] : un tableau d'octets

     

    donc l'arbre genealogique ressemblerait à 

     

    Image   WriteableBitmap

    BitmapImage

    Stream

    byte[] 

     

    voila !


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue
    • Proposé comme réponse Ciprian Duduiala lundi 19 septembre 2011 07:06
    • Marqué comme réponse Neo33ASM lundi 19 septembre 2011 13:48
    vendredi 16 septembre 2011 14:27
    Modérateur
  • Tu as plusieurs possibilités pour ça.


    La première est d'afficher ton image dans un contrôle Image en settant sa propriete Source (tres pratique pour tirer partie des differentes options de creation offertes sous Mango). Pour sauvegarder ton image par la suite, tu crees un WirteableBitmapImage a partir de ton controle Image que tu peux convertir en byte[] pour le stocker dans l'IsolatedStorage.

    La deuxieme solution est de telecharger ton image manuellement avec WebClient.OpenReadAsync. A partir du Stream tu peux ensuite creer un BitmapImage ou alors creer un byte[] et le mettre dans l'IsolatedStorage.

    • Proposé comme réponse Ciprian Duduiala lundi 19 septembre 2011 07:06
    • Marqué comme réponse Neo33ASM lundi 19 septembre 2011 13:49
    vendredi 16 septembre 2011 17:10
  • En fait j'ai un souci dans mon projet c'est que lorsque j'affiche une photo en plein écran, lorsque je la manipule (zoom, drag), ça a tendance à saccader et je ne comprends pas pourquoi...
    // j'affiche les image façon photoAffichee.Source = new BitmapImage(new Uri(url));
    Est-ce que vous pensez que en téléchargeant les images manuellement je gagnerai en performances ? ou carrément en les enregistrant dans l'isolated storage ?
    vendredi 16 septembre 2011 23:13
  • non du tout, une fois que ton controle image est chargé, tout n'est que gpu, mais tu dois mal faire ta manipulation, il faut que tu n'utilises que des transformations, pas de changement de margin ou autre truc ainsi
    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue
    samedi 17 septembre 2011 10:29
    Modérateur
  • bah pourtant je n'utilise que des transformations...

    mais d'un autre côté ça m'a un peu rassuré de voir que l'appli officielle de Facebook souffre du même souci.

    samedi 17 septembre 2011 23:27
  • Il faudrait voir le code, je fais ca asap
    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue
    lundi 19 septembre 2011 13:04
    Modérateur