locked
Enregistrer une image dans la galerie RRS feed

  • Question

  • Bonjour a tous,

    J'ai un contrôle image en xaml qui récupère une image via une url absolu. Cette image s'affiche bien, mais je voudrai qu'au clique d'un bouton l'utilisateur puisse enregistrer cette image dans sa galerie.

    j'ai essayé :

     try
     {
        MediaLibrary myMediaLibrary = new MediaLibrary();
        BitmapImage bmpI = (BitmapImage)Image1.Source;
        Byte[] tabByte = Converter.ConvertToBytes(bmpI);
        myMediaLibrary.SavePicture(titre, tabByte);
     }
    catch (Exception ex)
     {
         MessageBox.Show(ex.Message);    
      }

    Le problème est que cela m'enregistrer une image toute noir.

    Je comprend pas d'ou peut venir le problème.

    Par avance merci pour votre aide.

    lundi 11 mars 2013 17:15

Réponses

  • Je pense que ton Converter.ConvertToBytes ne doit pas fonctionner

    Voici un code qui fonctionne

            public static byte[] ConvertToBytes(BitmapImage bitmapImage)
            {
                byte[] data;
                // Get an Image Stream
                using (MemoryStream ms = new MemoryStream())
                {
                    WriteableBitmap btmMap = new WriteableBitmap(bitmapImage);
    
                    // write an image into the stream
                    Extensions.SaveJpeg(btmMap, ms,
                        bitmapImage.PixelWidth, bitmapImage.PixelHeight, 0, 100);
    
                    // reset the stream pointer to the beginning
                    ms.Seek(0, 0);
                    //read the stream into a byte array
                    data = new byte[ms.Length];
                    ms.Read(data, 0, data.Length);
                }
                //data now holds the bytes of the image
                return data;
            }

         try
                {
                    MediaLibrary myMediaLibrary = new MediaLibrary();
                    BitmapImage bmpI = (BitmapImage)bmp.Source;
                    Byte[] tabByte = ConvertToBytes(bmpI);
                    myMediaLibrary.SavePicture("titre", tabByte);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

    Rudy


    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

    • Marqué comme réponse SpanpoAndCo mardi 12 mars 2013 10:05
    mardi 12 mars 2013 09:21

Toutes les réponses

  • Je pense que ton Converter.ConvertToBytes ne doit pas fonctionner

    Voici un code qui fonctionne

            public static byte[] ConvertToBytes(BitmapImage bitmapImage)
            {
                byte[] data;
                // Get an Image Stream
                using (MemoryStream ms = new MemoryStream())
                {
                    WriteableBitmap btmMap = new WriteableBitmap(bitmapImage);
    
                    // write an image into the stream
                    Extensions.SaveJpeg(btmMap, ms,
                        bitmapImage.PixelWidth, bitmapImage.PixelHeight, 0, 100);
    
                    // reset the stream pointer to the beginning
                    ms.Seek(0, 0);
                    //read the stream into a byte array
                    data = new byte[ms.Length];
                    ms.Read(data, 0, data.Length);
                }
                //data now holds the bytes of the image
                return data;
            }

         try
                {
                    MediaLibrary myMediaLibrary = new MediaLibrary();
                    BitmapImage bmpI = (BitmapImage)bmp.Source;
                    Byte[] tabByte = ConvertToBytes(bmpI);
                    myMediaLibrary.SavePicture("titre", tabByte);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

    Rudy


    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

    • Marqué comme réponse SpanpoAndCo mardi 12 mars 2013 10:05
    mardi 12 mars 2013 09:21
  • Ah oui désolé j'avais oublier de mettre les détails de ma fonction Converter.ConvertToBytes.

    Et effectivement le problème venez bien de celle-ci.

    En tous cas, encore une fois c'est toi qui me sort de la galère. Le code marche très bien.

    Merci Rudy pour ton aide.

    mardi 12 mars 2013 10:05