none
resize automático de imagens com c#.net RRS feed

  • Pergunta

  •  

    Bom dia,

     

    estou precisando fazer uma galeria de fotos, já peguei alguns exemplos até prontos, porém oq eu gostaria de fazer era enviar uma foto por ftp e por código c#.net ele automaticamente pega a imagem 1024x768 por exemplo e clona ela com 50x50 e outra em 640x480.. igual sites de fotos mesmo, para que uma possa ser a thumbnail e a outra a imagem do lado (maior).. e sendo que sempre as 3 ultimas fotos enviadas vou deixar na página principal do site, as imagens 50x50 por exemplo...

     

    alguem já fez isto em c#?

     

    Grato.

    segunda-feira, 22 de dezembro de 2008 10:51

Respostas

  • Code Snippet

    //Define variáveis
    System.Drawing.Image imagem;
    System.Drawing.Image thumb;

    //Recupera a imagem original
    imagem = System.Drawing.Image.FromFile("CAMINHO_ARQUIVO");

    //Aqui é feita a renderização proporcional da altura da imagem
    //tomando por base que o largura final dela é de 50px;
    int width = 50;
    int height;
    height = (int)(width * imagem.Height) / imagem.Width;

    //Gera a nova imagem reduzida
    thumb = imagem.GetThumbnailImage(width, height, null, System.IntPtr.Zero);

    //Salva a imagem
    thumb.Save("CAMINHO_THUMB");



    OBS 1: Se vc pegar uma imagem 1024x768 e redimensionar para 50x50 ela irá ficar "deformada", pois a proporção não está adequada. Vc está transformando um retângulo em um quadrado. O código acima previne esse tipo de problema. Fica a seu critério!
    OBS 2: O CAMINHO (tanto para leitura como gravação) deve ser informado completo: Unidade + diretórios + nome do arquivo.
    Exemplo: C:\Inetpub\wwwroot\MeuSite\Imagens\NomeImagem.jpg

    Espero ter ajudado!
    segunda-feira, 22 de dezembro de 2008 12:49

Todas as Respostas

  • Code Snippet

    //Define variáveis
    System.Drawing.Image imagem;
    System.Drawing.Image thumb;

    //Recupera a imagem original
    imagem = System.Drawing.Image.FromFile("CAMINHO_ARQUIVO");

    //Aqui é feita a renderização proporcional da altura da imagem
    //tomando por base que o largura final dela é de 50px;
    int width = 50;
    int height;
    height = (int)(width * imagem.Height) / imagem.Width;

    //Gera a nova imagem reduzida
    thumb = imagem.GetThumbnailImage(width, height, null, System.IntPtr.Zero);

    //Salva a imagem
    thumb.Save("CAMINHO_THUMB");



    OBS 1: Se vc pegar uma imagem 1024x768 e redimensionar para 50x50 ela irá ficar "deformada", pois a proporção não está adequada. Vc está transformando um retângulo em um quadrado. O código acima previne esse tipo de problema. Fica a seu critério!
    OBS 2: O CAMINHO (tanto para leitura como gravação) deve ser informado completo: Unidade + diretórios + nome do arquivo.
    Exemplo: C:\Inetpub\wwwroot\MeuSite\Imagens\NomeImagem.jpg

    Espero ter ajudado!
    segunda-feira, 22 de dezembro de 2008 12:49
  • Danilo, obrigado pela resposta...

     

    bom, testei aqui seu código e lembro de ter feito algo assim na faculdade com c++ mas não sabia se dava certo... porém quando tentei utilizar este código passando o caminho exato da imagem e até colocando na raiz c: também, deu este erro:

     

    Exception Details: System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.

     

    o que pode ser?

     

    Grato

    terça-feira, 23 de dezembro de 2008 00:44
  • Era o caminho mesmo o problema, vc estava certo..

    brigado danilo.

     

    abraço

    terça-feira, 23 de dezembro de 2008 22:15
  • OK!

    Lembre-se sempre de usar o caminho físico completo.
    Quando colocar o WebSite em servidor de terceiro (algum WebHosting), procure saber o caminho físico da pasta onde ficará o seu site.
    Sugiro configurar isso no Web.config, assim poderá alterar o caminho entre desenvolvimento e produção sem ter que recompilar a aplicação. Facilita também na manutenção, caso haja mudanças de pastas e coisas similares.
    segunda-feira, 5 de janeiro de 2009 13:02