Obrigado Bruno. Desculpa a demora, mas é que estou com o tempo meio
curto por aquí.
Meu proble aconteceu porque eu estava tentando mandar um byte[] do c#
para o Flex, sendo que eu tinha que fazer um cast para
FluorineFx.AMF3.ByteArray antes de enviar para o flex. Ainda assim, o
C# não aceita conversão de byte[] para FluorineFx.AMF3.ByteArray.
Então pra quem precisar foi mais ou menos assim:

lado servidor:
MemoryStream ms = new MemoryStream(<seu byte[]>); //<seu byte[]>
obviamente o campo retornado do bd
FluorineFx.AMF3.ByteArray imagemBlob = new ByteArray(ms);
return imagemBlob;

lado client:
img:Image = new Image();
img.source = evt.result; //evt.result contém o
FluorineFx.AMF3.ByteArray que foi declarado como imagemBlob no server

tabela de serialização fluorine: 
http://www.fluorinefx.com/docs/fluorine/typeconversion.html

Obrigado ao Bruno e ao Mário.


On 9 jun, 15:34, Bruno Tourinho <[email protected]> wrote:
> Aí Leonardo, tô enviando para você e para o grupo caso alguém também
> precise:
>
> *Para exibir a imagem já salva em ByteArray:*
>
> //-> sua imagem
> var previewImg:Image = new Image();
>
> var byteArr:ByteArray;
> var base64:Base64Decoder = new Base64Decoder();
> base64.decode(<SEU BYTEARRAY AQUI>);
> byteArr = base64.toByteArray();
> previewImg.source = byteArr;
>
> *Para salvar a imagem é um pouquinho mais chato:*
>
> //-> inicia o menu para selecionar os arquivos usando filereference
>             private function startLoadingFile():void
>             {
>                 _loadFile = new FileReference();
> _loadFile.addEventListener(Event.SELECT, selectHandler);
>                 var fileFilter:FileFilter = new FileFilter("Imagens: (*.jpg,
> *.png)", "*.jpg; *.png");
>                 _loadFile.browse([fileFilter]);
>             }
> //-> handler da selecao do arquivo
>             private function selectHandler(event:Event):void
>             {
>                 _loadFile.removeEventListener(Event.SELECT, selectHandler);
>                 _loadFile.addEventListener(Event.COMPLETE,
> loadCompleteHandler);
>                 _loadFile.load();
>             }
> //-> handler do carregamento do arquivo
>             private function loadCompleteHandler(event:Event):void
>             {
>                 _loadFile.removeEventListener(Event.COMPLETE,
> loadCompleteHandler);
>                 var loader:Loader = new Loader();
>                 loader.contentLoaderInfo.addEventListener(Event.COMPLETE,
> loadBytesHandler);
>                 loader.loadBytes(_loadFile.data);
>             }
> //-> funcao que carrega a imagem para bytes
>             private function loadBytesHandler(event:Event):void
>             {
>                 var loaderInfo:LoaderInfo = (event.target as LoaderInfo);
>                 loaderInfo.removeEventListener(Event.COMPLETE,
> loadBytesHandler);
>                 imageToDisplay = loaderInfo.content as Bitmap;
>
> //-> minha POG para converter tanto PNG quanto JPG
>
> if(_loadFile.name.substring(_loadFile.name.length-3,_loadFile.name.length).toLowerCase()
> == 'png')
>                 {
>                     var pngEncoder:PNGEncoder = new PNGEncoder();
>                     preview.source = imageToDisplay;
>                     imageByteArray =
> pngEncoder.encode(imageToDisplay.bitmapData) as ByteArray;
>                 }
>                 else
>
> if(_loadFile.name.substring(_loadFile.name.length-3,_loadFile.name.length).toLowerCase()
> == 'jpg')
>                     {
>                         var jpgEncoder:JPEGEncoder = new JPEGEncoder();
>                         preview.source = imageToDisplay;
>                         imageByteArray =
> jpgEncoder.encode(imageToDisplay.bitmapData) as ByteArray;
>                     }
>
> //-> Aí você manda o imageByteArray pro banco
>
> Espero que ajude, eu demorei pra achar na internet algo que funcionasse
> Ahh, observação, fiz isso com o FB 4.5 mas acredito que deva funcionar no
> FB4 também...
>
> 2011/6/9 Leonardo Oliveira <[email protected]>
>
>
>
>
>
>
>
> > Bruno, se puder envia pro meu email por favor.
> > obrigado.
>
> > On 8 jun, 16:16, Bruno Tourinho <[email protected]> wrote:
> > > Eu fiz salvando no sql como BASE64 na hora de voltar é só fazer um load e
> > a imagem recebe o bytearray! Tenho uns códigos aqui se precisar!
>
> > > Bruno
>
> > > Sent from my iPhone
>
> > > On 08/06/2011, at 01:53 PM, Mário Júnior <[email protected]> wrote:
>
> > > > Com Java simplesmente mando um Byte[] para o Flex, que irá chegar como
> > um ByteArray (tipagem no AS3) e "bindo-o" com o source de um Image.
>
> > > > Como vc está usando .Net, precisa ver com o seu middleware se ele
> > suporta serialização de bytes.. pesquise na documentação do fluorine ou do
> > WebORB (os dois serializadores usados para .Net).
>
> > > > Veja oq está chegando no resultEvent das chamadas pelo Debugger, se for
> > um ByteArray deve funcionar, com certeza.
>
> > > > []'s
>
> > > > Em 8 de junho de 2011 13:57, Leonardo Oliveira <
> > [email protected]> escreveu:
> > > > bom pessoal, eu sei que muita gente já falou sobre o assunto, mas
> > > > mesmo com todas as pesquisas e tentativas aquí, estou tendo
> > > > dificuldades em montar uma imagem na tela.
> > > > bom, através da FileReference, envio a imagem para o C# que por sua
> > > > vez grava no Oracle (blob). agora quero fazer o processo inverso,
> > > > alguém pode me dar um help?
> > > > valeu.
>
> > > > --
> > > > Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> > > > Para enviar uma mensagem, envie um e-mail para
> > [email protected]
> > > > Para sair da lista, envie um email em branco para
> > [email protected]
> > > > Mais opções estão disponíveis emhttp://groups.google.com/group/flexdev
>
> > > > --
> > > > Mario Junior
> > > >http://blog.mariojunior.com/
> > > > @mariojunior
> > > > --
> > > > Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> > > > Para enviar uma mensagem, envie um e-mail para
> > [email protected]
> > > > Para sair da lista, envie um email em branco para
> > [email protected]
> > > > Mais opções estão disponíveis emhttp://groups.google.com/group/flexdev
>
> > --
> > Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> > Para enviar uma mensagem, envie um e-mail para [email protected]
> > Para sair da lista, envie um email em branco para
> > [email protected]
> > Mais opções estão disponíveis emhttp://groups.google.com/group/flexdev

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a