Manipulação de imagens com Grails
17/06/2010 00:00
0
Aê pessoal...

Utilizando o banco de dados PostgreSQL criei uma tabela para imagens assim:
CREATE TABLE fotos
(
cod_foto serial NOT NULL,
imagem bytea,
)

E no Grails em meu controller estou utilizando:
def scaffold = Fotos;

E em meu dominio eu fiz assim:
byte[] imagem

E por eu estar usando bando de dados legado ficou assim no mapping
table "fotos"
version false
id generator:"sequence",params:[sequence:"fotos_cod_foto_seq"]
id column:"cod_foto"
imagem column:"imagem"

Na pagina web surge o campo upload e foi feito o cadastro da imagem selecionada da minha pasta com sucesso, mas ao listar o campo Imagem fica assim:
[-1, -40, -1, -32, 0, 16, 74, 70, 73, 70, 0, 1, 1, 1, 0, 72, 0, 72, 0, 0, -1, -31, 57, -73, 104, 116, 116, 112, 58, 47, 47, 110, 115, 46, 97, 100, 111, 98, 101, 46, 99, 111, 109, 47, 120, 97, 112, 47, 49, 46, 48, 47, 0, 60, 63, 120, 112, 97, 99, 107, 101, 116, 32, 98, 101, 103, 105, 110, 61, 34, -17, -69, -65, 34, 32, 105, 100, 61, 34, 87, 53, 77, 48, 77, 112, 67, 101, 104, 105, 72, 122, 114, 101, 83, 122, 78, 84, 99, 122, 107, 99, 57, 100, 34, 63, 62, 10, 60, 120, 58, 120, 109, 112, 109, 101, 116, 97, 32, 120, 109, 108, 110, 115, 58, 120, 61, 34, 97, 100, 111, 98, 101, 58, 110, 115, 58, 109, 101, 116, 97, 47, 34, 32, 120, 58, 120, 109, 112, 116, 107, 61, 34, 65, 100, 111, 98, 101, 32, 88, 77, 80, 32, 67, 111, 114, 101, 32, 52, 46, 50, 46, 50, 45, 99, 48, 54, 51, 32, 53, 51, 46, 51, 53, 49, 55, 51, 53, 44, 32, 50, 48, 48, 56, 47, 48, 55, 47, 50,
... assim continua com milhares de caracteres... -68, -51, -80, 96, 10, 52, 124, 79, -1, -39]

Alguem pode me dar uma dica de como
fazer para visualizar a imagem e não os bits?
Tags: Grails


0
Ramos, a imagem aparece desta maneira porque ao gravar a mesma imagem no banco de dados ela é serializada, e não é possível visualizar a imagem a menos que ela seja desserializada novamente.
1- Você pode fazer isso usando um plugin : ImageTools (Nunca usei desta maneira)
2- Ou desta maneira agrupando a imagem em uma closure( com closure)
17/06/2010 00:00


0
[quote="lucasDie"]Ramos, a imagem aparece desta maneira porque ao gravar a mesma imagem no banco de dados ela é serializada, e não é possível visualizar a imagem a menos que ela seja desserializada novamente.
1- Você pode fazer isso usando um plugin : ImageTools (Nunca usei desta maneira)
2- Ou desta maneira agrupando a imagem em uma closure( com closure)[/quote]

Eu sou a favor da segunda opção.

Antes que alguém atire alguma pedra, esses procedimentos são normais em qualquer linguagem ou framework. Querer que o grails faça isso sem um plugin ou fazendo na mão seria querer demais <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
18/06/2010 00:00


0
O seguinte código renderiza uma imagem a partir de um arquivo
def renderPhoto = {
response.contentType = &quot;image/jpeg&quot;
def photo = new File(&quot;caminho&quot;)
response.contentLength = photo.size()
response.outputStream << new FileUtil().getBytesFromFile(photo)
}


E o método getBytesFromFile
def byte[] getBytesFromFile(File file) throws IOException {
InputStream is = new FileInputStream(file);

// Get the size of the file
long length = file.length();

if (length > Integer.MAX_VALUE) {
println &quot;File is too large&quot;
}

// Create the byte array to hold the data
byte[] bytes = new byte[(int)length];

// Read in the bytes
int offset = 0;
int numRead = 0;
while (offset < bytes.length
&amp;&amp; (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
offset += numRead;
}

// Ensure all the bytes have been read in
if (offset < bytes.length) {
throw new IOException(&quot;Could not completely read file &quot;+file.getName());
}

// Close the input stream and return bytes
is.close();
return bytes;
}
18/06/2010 00:00


0
[quote=&quot;MayogaX&quot;][quote=&quot;lucasDie&quot;]Ramos, a imagem aparece desta maneira porque ao gravar a mesma imagem no banco de dados ela é serializada, e não é possível visualizar a imagem a menos que ela seja desserializada novamente.
1- Você pode fazer isso usando um plugin : ImageTools (Nunca usei desta maneira)
2- Ou desta maneira agrupando a imagem em uma closure( com closure)[/quote]

Eu sou a favor da segunda opção.

Antes que alguém atire alguma pedra, esses procedimentos são normais em qualquer linguagem ou framework. Querer que o grails faça isso sem um plugin ou fazendo na mão seria querer demais <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->[/quote]


Sei que nem tudo são flôres mas com &quot;Grails&quot; querer demais sempre será um privilégio com este maravilhoso framework!
Aguarde as novas versões e confira...
18/06/2010 00:00


0
Eu sou a favor da segunda opção.

Antes que alguém atire alguma pedra, esses procedimentos são normais em qualquer linguagem ou framework. Querer que o grails faça isso sem um plugin ou fazendo na mão seria querer demais <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->



Sei que nem tudo são flôres mas com &quot;Grails&quot; querer demais sempre será um privilégio com este maravilhoso framework!
Aguarde as novas versões e confira...[/quote]

Tenho medo de que o Grails acabe fazendo tudo e as pessoas parem de trabalhar com ele só por alguma modinha de &quot;ah, não, ele faz tudo deve ser um lixo&quot;
Sinto que se um framework é muito... como posso dizer, nos ajuda demais, as pessoas param de pensar, se acomodam e acabam trollando ele.
22/06/2010 00:00


0
Só pra lembrar, é pra isto que existem plugins! Pra que você possa ampliar o framework para usos imprevistos do bichinho.<!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->


0
Concordo com o kicolobo, os plugins estão ai para isso então pq não utiliza-los?
E se quantidade de plug-ins pude-se falar como é o framework de uma maneira ruim, o Rails não seria o que é hoje e nem teria a quantidade de usuários que tem!
22/06/2010 00:00


0
[quote=&quot;MayogaX&quot;]
Eu sou a favor da segunda opção.

Antes que alguém atire alguma pedra, esses procedimentos são normais em qualquer linguagem ou framework. Querer que o grails faça isso sem um plugin ou fazendo na mão seria querer demais <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->



Sei que nem tudo são flôres mas com &quot;Grails&quot; querer demais sempre será um privilégio com este maravilhoso framework!
Aguarde as novas versões e confira...



Tenho medo de que o Grails acabe fazendo tudo e as pessoas parem de trabalhar com ele só por alguma modinha de &quot;ah, não, ele faz tudo deve ser um lixo&quot;
Sinto que se um framework é muito... como posso dizer, nos ajuda demais, as pessoas param de pensar, se acomodam e acabam trollando ele.
[/quote]


Também concordo com o kicolobo, tem os plugins e além do mais, Grails é ótimo se deseja fazer no braço fique a vontade, e o que não for manual o carinha toma conta do recado... eu em particular procuro algo que seja produtivo e não que &quot;faça algo por mim&quot;, pois tempo para mim é grana! <!-- s;-) --><img src="{SMILIES_PATH}/icon_wink.gif" alt=";-)" title="Wink" /><!-- s;-) -->
22/06/2010 00:00


0
[quote=&quot;ramoswdsw&quot;][quote=&quot;MayogaX&quot;]
Eu sou a favor da segunda opção.

Antes que alguém atire alguma pedra, esses procedimentos são normais em qualquer linguagem ou framework. Querer que o grails faça isso sem um plugin ou fazendo na mão seria querer demais <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->



Sei que nem tudo são flôres mas com &quot;Grails&quot; querer demais sempre será um privilégio com este maravilhoso framework!
Aguarde as novas versões e confira...



Tenho medo de que o Grails acabe fazendo tudo e as pessoas parem de trabalhar com ele só por alguma modinha de &quot;ah, não, ele faz tudo deve ser um lixo&quot;
Sinto que se um framework é muito... como posso dizer, nos ajuda demais, as pessoas param de pensar, se acomodam e acabam trollando ele.
[/quote]


Também concordo com o kicolobo, tem os plugins e além do mais, Grails é ótimo se deseja fazer no braço fique a vontade, e o que não for manual o carinha toma conta do recado... eu em particular procuro algo que seja produtivo e não que &quot;faça algo por mim&quot;, pois tempo para mim é grana! <!-- s;-) --><img src="{SMILIES_PATH}/icon_wink.gif" alt=";-)" title="Wink" /><!-- s;-) -->[/quote]

Não estou falando de nós, e sim do que as outras pessoas pensariam do Grails. É bom ter os plugins, mas algumas coisas ficam melhores sem ele (ainda estou de birra com o RichUI), e em outras os plugins nos salvam a pele e nos economizam tempo. Há casos e casos. Coisas simples, se você não tem pressa, podem ser feitas sem plugin. <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) --> Eu mesmo queria transformar o que estou fazendo agora em um plugin (é muito chato de se fazer e muito demorado. Iria ajudar os outros). Mas em outros frameworks já vi uns plugins pequinininhos que além de não fazerem muita coisa pessavam o projeto. Não queria que acontecesse o mesmo com o Grails! <!-- s:P --><img src="{SMILIES_PATH}/icon_razz.gif" alt=":P" title="Razz" /><!-- s:P -->
24/06/2010 00:00


0
Procuro utilizar plugins o mínimo possível, utilizando muitos plugins geralmente você acaba tendo mais produtividade mas sacrificando a flexibilidade, e para determinadas coisas já percebi que demoraria mais tempo tentando botar para funcionar e aprendendo a usar o plugin do que criando minha própria solução.
24/06/2010 00:00


0
[quote=&quot;Quantum&quot;]Procuro utilizar plugins o mínimo possível, utilizando muitos plugins geralmente você acaba tendo mais produtividade mas sacrificando a flexibilidade, e para determinadas coisas já percebi que demoraria mais tempo tentando botar para funcionar e aprendendo a usar o plugin do que criando minha própria solução.[/quote]


Concordo! Além de alguns plugins deixarem a app pesada (insisto nisso)
06/07/2010 00:00



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto