none
Uso de GET con Web api, mi objeto al deserealizar la imagen se descarga mal RRS feed

  • Pregunta

  • Hola, Estoy subiendo objetos a mi Web Api los cuales contiene como atributo un Byte[] y es una imagen, cuando guardo con POST mi imagen, se guarda bien(eso creo), pero cuando quiero tenerla de regreso y la convierto de Byte[] a BitmapImage se ve toda negra alguien sabe que puedo estar haciendo mal? les dejo lo que tengo.

    //Codigo donde convierto de bitmapImage a Byte[] y se lo asigno a un atributo de mi objeto.

    Uri uri = new Uri(@"Resources\foto_perfil4.png", UriKind.Relative);
                    StreamResourceInfo resourceInfo = Application.GetResourceStream(uri);                
                    BitmapImage bmp = new BitmapImage();
                    bmp.SetSource(resourceInfo.Stream);

    //Deserealizacion 

                   userAccount.Foto = ImageConverter.ConvertToBytes(bmp);WebClient webClient = new WebClient();
                webClient.Headers["Accept"] = "application/json";
                webClient.DownloadStringCompleted += new   DownloadStringCompletedEventHandler(webClient_DownloadCatalogCompleted);
                webClient.DownloadStringAsync(new Uri(apiUrl));

    //webClient_DownloadCatalogCompleted

     var ListaDeObjetosConImagen= JsonConvert.DeserializeObject<CuentaUsuario[]>(e.Result);

    foreach (var item in ListaDeObjetosConImagen)
                        {

    newUser.Foto = ImageConverter.ConvertToBitmapImage(item.Foto);

    }

    //Metodo de Byte[] a BitmapImage

    public static BitmapImage ConvertToBitmapImage(byte[] image)
            {
                var bitmapImage = new BitmapImage();
                var memoryStream = new MemoryStream(image);
                bitmapImage.SetSource(memoryStream);
                return bitmapImage;
            }

    espero sus respuestas  Gracias.

    martes, 30 de diciembre de 2014 0:39

Respuestas

  • hola resulta que item.foto ya es un byte[] no necesito pasarlo a byte[] como lo propones en la primera linea.. y el resto del codigo no funciona para lo que ocupo, pero gracias.. ya opte por otra estrategia mas rapida 

    Saludos


    • Editado Paul D.Luffy viernes, 2 de enero de 2015 17:26
    • Marcado como respuesta Paul D.Luffy viernes, 2 de enero de 2015 17:27
    viernes, 2 de enero de 2015 17:25

Todas las respuestas

  • hola

    que pasa si en el servidor tomas el byte[] y usas el File.WriteAllBytes() para crear un archivo fisico y validar que se haya guardado de forma correcta

    porque quizas este guardada mal, por eso la ves negra

    como sabes que esta funcionalidad ImageConverter.ConvertToBytes(bmp); funciona bien ? que pasa si tomas ese byte[] y lo conviertes nuevamente a image para mostarlo sin enviarlo a ningun servicio, solo para validar que esa conversion sea correcta

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 30 de diciembre de 2014 3:00
  • pues ya verifique y pues en efecto el detalle esta al momento de crear el byte[] solo que el detalle ahora esque mis imagenes las guardare como png con transparencias y no las guarda como tal, Sabe alguna forma de guardar imagenes PNG con transparencias?
    martes, 30 de diciembre de 2014 3:49
  • quizas debas evaluar usar un PngBitmapEncoder

    BitmapImage to byte[]

    como veras usa un encode para generar el byte[]

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 30 de diciembre de 2014 12:23
  • Lo siento, no especifique que eso lo ocupo para Windows phone 8, todo el desarrollo sera ahi, por lo que esa clase que me sugiere no me sirve, espero haya una para WP, Gracias y espero su respuesta.
    miércoles, 31 de diciembre de 2014 0:07
  • Hola Paul, creo que necesitas algo como esto:

    MemoryStream stream = new MemoryStream(item.Foto);
    BitmapImage image = new BitmapImage();
    
    image.SetSource(stream);
    
    //Donde image contiene la imagen obtenida desde el GET de tu Web API.

    Espero te resulte útil.

    Saludos.


    Christian Amado
    Software Engineer | MCPD: Windows Phone Developer | MCTS: Silverlight Developer
    Don't forget to mark the right answer and vote up if helps you.
    MCP Profile


    viernes, 2 de enero de 2015 16:19
  • hola resulta que item.foto ya es un byte[] no necesito pasarlo a byte[] como lo propones en la primera linea.. y el resto del codigo no funciona para lo que ocupo, pero gracias.. ya opte por otra estrategia mas rapida 

    Saludos


    • Editado Paul D.Luffy viernes, 2 de enero de 2015 17:26
    • Marcado como respuesta Paul D.Luffy viernes, 2 de enero de 2015 17:27
    viernes, 2 de enero de 2015 17:25