none
Imagem em um projeto "sql server project"

    Question

  • Bom dia,

    Gostaria de saber se é possível manipular imagens em um projeto do tipo "sql server project", se é possível, como fazer.

    Para ser mais específico, redimensionar uma imagem.

    Obrigado.

    Wednesday, December 15, 2010 12:08 PM

Answers

  • Iran,

    Eu particularmente resolveria esse problema dando uma ajustada no método que faz o armazenamento... Ao invés de gravar somente a imagem no seu tamanho original, você grava também um thumbnail da imagem... Apesar de aumentar o tamanho da sua base por você estar armazenando esse thumbnail, o custo não é assim tão grande, obviamente dependendo da quantidade de imagens que você vai armazenar...

    Com isso, na hora de exibir a imagem para o usuário você poderia pegar esse thumbnail, que vai ser bem mais leve de ser carregado e, se necessário, você então faz outra consulta ao banco para pegar a imagem no seu tamanho completo...

    Outra opção seria compactar a imagem antes de armazená-la no banco, mas, isso na maioria dos formatos de imagem é inútil pois elas já são bem compactadas (a não ser que você esteja trabalhando exclusivamente com BMPs, por exemplo, que podem ter uma redução enorme de tamanho ao compactá-las, na maioria dos casos)...


    André Alves de Lima
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    Thursday, December 16, 2010 9:57 PM
    Moderator

All replies

  • Bom dia,

    Gostaria de saber se é possível manipular imagens em um projeto do tipo "sql server project", se é possível, como fazer.

    Para ser mais específico, redimensionar uma imagem.

    Obrigado.


    http://www.switchonthecode.com/tutorials/csharp-tutorial-image-editing-saving-cropping-and-resizing
    Just Be Humble Malange!
    Wednesday, December 15, 2010 8:16 PM
  • Olá,

    Não faz muito sentido ter esse tipo de código em um projeto do tipo SQL Server Project... Você poderia detalhar melhor o quê você está querendo fazer?

    Você pode criar objetos no SQL Server utilizando código gerenciado, mas, tome cuidado e verifique se isso é realmente necessário e se não seria melhor fazer isso em client side ou até mesmo em TSQL direto... Mais informações sobre criação de objetos no SQL Server utilizando managed code aqui:

    http://msdn.microsoft.com/en-us/library/dd997440.aspx


    André Alves de Lima
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    Wednesday, December 15, 2010 11:34 PM
    Moderator
  • Olá Andre,

    O meu chefe teve essa "idéia", porque algumas vezes armazenamos imagens de  um certo tamanho no banco, e precisamos puxar, em alguns lugares, a imagem em tamanho normal e, em outros, uma miniatura. Sendo assim sempre trafega a "imagem grande" pela rede (do servidor de BD) para ser redimensionada na aplicação, e ele acredita que com o isso pode-se gerar um atraso na aplicação ou um "gargalo de rede" a longo prazo(medida que a aplicação cresce). Então ele me pediu para verificar se tem como fazer esse redimensionamento direto no banco, e já retornar para aplicação do tamanho que a mesma pediu.

    O que você acha dessa idéia?

    Obrigado.
    Thursday, December 16, 2010 10:23 AM
  • Bom dia Malange,

    O problema é que nesse tipo de projeto, não consigo importar o System.Drawing.

    Obrgado.

    Thursday, December 16, 2010 10:27 AM
  • @IRanNPI

    Assim ficou claro com a explicacao a cima. Diz o teu chefe que quando se guarda imagem na base de dados, influencia o desempenho da base de dados.

    Nao e boa pratica gravar imagens na base de dados. So se grava imagem quando se trabalha com um pequeno numero de imagens, por exemplo voce pode armazenar 50 fotografias numa base de dados. Se a aplicacao for de cadastro de clientes entao nao e aconselhavel gravar imagens porque ela cresce a medida que se var inserido clientes.

    A melhor opcao encontrada seria voce gravar apenas o caminho da imagem na base de dados. A imagem ficaraia numa pasta ou num ficheiro texto, como queiras. A medida que vai puxando informacao ela pega o caminho da imagem e busca a imagem na pasta. Assim resolveria o seu problema.

    Quando ao tamanho da imagem tu podes resolver de duas forma, diminuindo o tamanho usando codigo ou colocando um picturebox com o tamanho predefinido e quando puxar a imagem ela sempre ficara no tamanho defenido na picturebox. Pra tal a propriedade SizeMode tem de ser igual=StrechImage.

     


    Just Be Humble Malange!
    Thursday, December 16, 2010 2:07 PM
  • Iran,

    Eu particularmente resolveria esse problema dando uma ajustada no método que faz o armazenamento... Ao invés de gravar somente a imagem no seu tamanho original, você grava também um thumbnail da imagem... Apesar de aumentar o tamanho da sua base por você estar armazenando esse thumbnail, o custo não é assim tão grande, obviamente dependendo da quantidade de imagens que você vai armazenar...

    Com isso, na hora de exibir a imagem para o usuário você poderia pegar esse thumbnail, que vai ser bem mais leve de ser carregado e, se necessário, você então faz outra consulta ao banco para pegar a imagem no seu tamanho completo...

    Outra opção seria compactar a imagem antes de armazená-la no banco, mas, isso na maioria dos formatos de imagem é inútil pois elas já são bem compactadas (a não ser que você esteja trabalhando exclusivamente com BMPs, por exemplo, que podem ter uma redução enorme de tamanho ao compactá-las, na maioria dos casos)...


    André Alves de Lima
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    Thursday, December 16, 2010 9:57 PM
    Moderator