Stuação é a seguinte tenho um array de bytes e gostaria de alguma maneira transforma-lo em um objeto que representasse uma Imagem
e exibi-lo na tela que usa JSF.De preferência sem gravação de arquivos em disco.
Talvez não seja uma boa ideia…
Está usando richfaces? se sim converta o vetor de bytes em um Image (ou ImageBuffer, nao me lembro) e use o componente do richfaces MediaOutPut.
Ele ajuda pra caramba, ainda mais pq você não precisa gravar o arquivo em disco e tudo mais, você joga direto o Image nele.
Dizem que ele tbm exibe pdf, mas nunca consegui fazer e em todos os foruns que encontrei ninguem nunca conseguiu tbm , então ainda é lenda pra mim hehehe
Se tiverem duvidas postem ae que ajudo no que for possível.
Cara, me dê uma ajuda, por favor. Já briguei (e muito) com este componente, a4j:mediaOutput. Consegui utilizá-lo, porém só consigo renderizar uma imagem (em bytes) se o tamanho da imagem for muito pequeno!
Se a imagem tiver o tamanho acima de 14kb, ele gera o seguinte erro:
GRAVE: Unblocking keep-alive exception
java.lang.IllegalArgumentException: Request header is too large
at com.sun.grizzly.tcp.http11.InternalInputBuffer.fill(InternalInputBuffer.java:756)
at com.sun.grizzly.tcp.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:458)
at com.sun.grizzly.http.ProcessorTask.parseRequest(ProcessorTask.java:821)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:659)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:662)
E aí, alguma sugestão? Estou usando um manageBean com scopo de session, mas testei com request e deu certo também, apenas para exibir a imagem pequena, no entanto como disse, imagens grandes me dá este erro.
Meu objetivo eh criar um slid show dinâmico. Voce teria alguma sugestão para isto? Obrigado.
Em um outro tópico que criei perguntei como poderia fazer, me sugeriram o ImageSwitch do primefaces, mas aquilo lá é bugado demais! Voce já testou? Eu tentei seguir o exemplo deles lá e gera uma exception de cast, muito louco.
Bom, como ele não deu certo resolvi tentar algo diferente.
Deixa eu te explicar: Meu slideshow vai ser dinamico, ou seja, eu vou estar sempre criando um ArrayList de objetos Imagem, que criei, que tem alguns atributos mas vou listar 3 somente: byte[] arquivo, String link, e String descricao, o arquivo é a imagem em bytes (blob), o link é um link anexado a imagem, voce já vai entender, e a descrição é auto explicativa.
Meu slide show deve trabalhar com esse ArrayList que falei, as imagens devem ficar mudando, de preferência com um Fade in como efeito. A minha dúvida é como fazer com que isso fique dinamico no sentido de rotacionar as imagens. Tente com a4j repeat mas ele faz tipo uma lista na tela hehehe. Preciso que a imagem mude no mesmo lugar onde a outra estava!
Bem, quando o usuário clica na imagem que está aparecendo, o site deve abrir uma nova janela redirecionando par ao link da imagem, entendeu? Me sugeriram Jquery, mas eu manjo nada disso, só o basicão mesmo. Voce teria alguma sugestão? Como voce faria usando a solução que me indicou? Pode me passar um codigo bem simples? Obrigado!
Então, a idéia ainda precisa ser mais lapidada. Só fazendo testes e mais testes pra chegar na fórmula mais bonitinha mesmo.
Como disse acima, procure o a4j:poll, ele cria uma espécie de timer, daí você pode alternar de uma imagem para outra de tempos em tempos, compreende?
Mas esse componente é somente um de vários recursos que você vai precisar. Agora é botar a mão na massa e colher dados pra saber o que se encaixa melhor no seu cenário.