locked
ArrayByte em php para BitMapImage no Silverlight RRS feed

  • Pergunta

  • Bom dia galera,  eu tenho um gif em php convertido em array de byte[]  pelo php e estou tentando converter esses bytes para um bitmapimage no silverlight mas ele me mostra este erro ( Falha catastrófica (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED)) ) . Penso que pode ser a conversão que o php faz de gif para byte[] seja diferente do que o C#.

     

    to fazendo o seguinte o php me retorna uma string com os bytes nela EX:. "120;10;60;0;190;170;151"  então eu pego essa string do um split e adiciono o resulta do split que no caso e um string[]  para um byte[] então no fim tento converter para imagem. com o memoryStream.

     

    code;

     

                    string[] stringArray = e.Result.Split(new char[] { ';' });
     
                    byte[] byteArray = new byte[stringArray.Count()];
     
                    for (int i = 0; i < stringArray.Count(); i++)
                    {
                        byteArray[i] = (byte)Convert.ToInt32(stringArray[i]);
                    }
     		BitmapImage image = new BitmapImage();
    		using (MemoryStream ms = new MemoryStream(byteArray))
                    {
                        image.SetSource(ms); // NESTE PONTO ACONTECE A FALHA 
                    }
    
    
    alguem tem alguma ideia do que pode ser...

    obrigado.

    quinta-feira, 5 de maio de 2011 12:55

Respostas

Todas as Respostas

  • Olá,

    Tente http://forums.silverlight.net/forums/p/177994/401703.aspx .


    Américo Arvani
    MCP Frw web 2.0 / MCP Frw web/win 3.5
    Se ajudou , marque como resposta.
    http://americoarvani.blogspot.com
    View Americo Arvani's profile on LinkedIn
    sexta-feira, 6 de maio de 2011 10:32
  • Tentei la mas no Decode para GIF  entra no metodo não responde nada. tipo entra no metodo e não sai dele nem retorna erro nem nada.

     

    		MemoryStream mStream = new MemoryStream();
     
                    mStream.Write(byteArray, 0, byteArray.Length);
                    
                    GifDecoder gfdec = new GifDecoder();
     
                    ImageTools.Image img = new ImageTools.Image();
                    gfdec.Decode(img, mStream); //ENTRA NESSA LINHA E NÂO RESPONDE MAIS
     
                    JpegEncoder jpeg = new JpegEncoder();
                    BitmapImage bitmap = new BitmapImage();
     
                    using (MemoryStream stream = new MemoryStream())
                    {
                        jpeg.Encode(img, stream);
                        bitmap.SetSource(stream);
                    }

    aproveitando... e possivel eu pegar o conteudo html de uma URL, e nesse conteudo contem imagens e eu quero pegar essa imagem e jogar
    para um Image ou um Bitmap ?  pois se eu consiguir fazer isso, posso alterar o servico php;

    Obrigado

    sexta-feira, 6 de maio de 2011 13:23
  • Ola...

    Se voce tiver acesso ao serviço php voce pode:
    - Retornar um array de bytes no formato Base64 (http://php.net/manual/en/function.base64-encode.php) assim fica mais facil converter para um byte[] no Silverlight depois

    - vc pode retornar um web metodo (http://imasters.com.br/artigo/4535/php/construindo_web_services_em_php/)

    - vc pode retornar a url da imagem no lugar da string de bytes...

     

    Se vc não tiver acesso ao servidor php...

    - Se a pagina estive no padrao xhtml (http://blogs.msdn.com/b/delay/archive/2007/09/24/bringing-more-html-to-silverlight-htmltextblock-improvements.aspx)

    - se não tive (HTML comun) vc pode usar o WebClient para baixar o html... e dentro dele vc procura com o IndexOf ou algo assim para achar a url da imagem (http://forums.silverlight.net/forums/p/212140/500116.aspx)

     

    Para carregar a imagem vc pode usar o WebClient para fazer o download da mesma e depois carregar o Image...

     

    Mas antes de mais nada... olha esse link aqui:

    http://www.silverlightshow.net/items/Loading-Files-From-a-Remote-Server-in-Silverlight.aspx

    • Marcado como Resposta Molinari quarta-feira, 11 de maio de 2011 13:56
    sexta-feira, 6 de maio de 2011 14:52