Abimael 0 Denunciar post Postado Abril 4, 2007 Alguém sabe como fazer para carregar uma foto com o tamanho diminuído, mas proporcionalmente sem que haja distorção? Compartilhar este post Link para o post Compartilhar em outros sites
skimo-solar 0 Denunciar post Postado Abril 4, 2007 function reduz_imagem($img, $max_x, $max_y, $nome_foto) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = (100 * $max_x) / $original_x; } else { $porcentagem = (100 * $max_y) / $original_y; } $tamanho_x = $original_x * ($porcentagem / 100); $tamanho_y = $original_y * ($porcentagem / 100); $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); $image = imagecreatefromjpeg($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagejpeg($image_p, $nome_foto, 100);}Créditos ao Fabyo porque peguei de uma classe de sua autoria. (não encontrei o link aqui agora) Compartilhar este post Link para o post Compartilhar em outros sites
Abimael 0 Denunciar post Postado Abril 5, 2007 Desculpe cara, mas é que eu sou meio burro, e não sei usar direito funções. Como eu devo chamar esta função? Compartilhar este post Link para o post Compartilhar em outros sites
LaBoss 0 Denunciar post Postado Abril 5, 2007 deve fazer algo assimreduz_imagem(IMAGEM, MAX X, MAX Y, NOME FOTO); Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Abril 5, 2007 chame a função assim: $foto = "foto.jpg"; reduz_imagem($foto, 300, 200, "nome_final.jpg") Use o round() na porcentagem, para não gerar erro no HTML. Abraços, Beraldo Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Abril 5, 2007 aki comigo nao deu ccerto a funcao, uso php 5...usei assim:como o amigo d cima disse usar round para arredondar a porcentagem<?php function reduz_imagem($img, $max_x, $max_y, $nome_foto) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = round((100 * $max_x) / $original_x); } else { $porcentagem = round((100 * $max_y) / $original_y); } $tamanho_x = round($original_x * ($porcentagem / 100)); $tamanho_y = round($original_y * ($porcentagem / 100)); $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); $image = imagecreatefromjpeg($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagejpeg($image_p, $nome_foto, 100);}$img = "galeriaflash/fotos/301.jpg";$nome = "alguma";echo reduz_imagem("galeriaflash/fotos/301.jpg", 200, 300, "alguma");?>e so aparece o numero um... Compartilhar este post Link para o post Compartilhar em outros sites
Tellys Castro 12 Denunciar post Postado Abril 5, 2007 echo reduz_imagem("galeriaflash/fotos/301.jpg", 200, 300, "alguma"); o ultimo item da funçao você tem q colocar a extençao do arqui.. tipo.: alguma.jpg ou gif ou png se for o caso Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Abril 5, 2007 não use echo, pois a função retorna o valor de imagejpeg (booleano), por isso aparece o "1". Aliás, creio que nem seja necessário retornar um valor. Abraços, Beraldo Compartilhar este post Link para o post Compartilhar em outros sites
Paulo de Tarso F. M. 24 Denunciar post Postado Abril 5, 2007 Bom, de qq forma, não sei como isso funciona, mas vale lembrar que a renderização das imagens via código, seja ele qual for, se é JS, se é HTML, PHP, ASP, etc., não é mto bom não... O ideal é se trabalhar com as imagens em seu tamanho certo...Claro, posso estar enganado qto a isso, eu nc testei essas funções, depois posso até ver e tals, mas acredito q o resultado final seja de maneira semelhante a renderização de imagens via PHP (ou qq outra linguagem) à renderização via HTML (ou CSS)... Ou seja, não fica mto bom naum... (Na minha opinião, claro...) Compartilhar este post Link para o post Compartilhar em outros sites
Tellys Castro 12 Denunciar post Postado Abril 5, 2007 essa funçao faz uma nova imagem paulo, com a biblioteca gd,, nao ha distorçao ou perca de qualidade nenhuma se bem configurada,, eu uso mto disso.... alias os sites q manipulam imagem nao vivem sem isso.... visto q esses esquemas otimizam o site ... eu sempre aconselho o tratamento..... de img qndo necessario Compartilhar este post Link para o post Compartilhar em outros sites
Paulo de Tarso F. M. 24 Denunciar post Postado Abril 5, 2007 essa funçao faz uma nova imagem paulo, com a biblioteca gd,, nao ha distorçao ou perca de qualidade nenhuma se bem configurada,, eu uso mto disso.... alias os sites q manipulam imagem nao vivem sem isso.... visto q esses esquemas otimizam o site ... eu sempre aconselho o tratamento..... de img qndo necessarioMas pelo q entendo, você tem uma imagem de tamanho XXX e YYY, certo? Essas funções não fazem algo do tipo, pegar essa imagem de tamanho XXX e YYY e a "transformam" em X e Y, por exemplo? Sendo assim, você está manipulando uma imagem q supostamente é maior, e o q eu digo qto à renderização é justamente isso: reduzir ou aumentar o tamanho somente pelas propriedades dela não funciona mto bem...Mas pelo q você me falou, vou ver se consigo analisar esse script... Não conheço PHP... Absolutamente nada... Então, pode ser q eu tenha uma certa dificuldade (naturalmente... rsrs) Mas vlw pelas dicas!(Preciso estudar um pouco mais sobre essas bibliotecas de imagens... Elas existem tb em ASP? Tô caindo mais pra esse último... Comecinho... Mas um dia chego lá... rsrs) Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Abril 5, 2007 lamento informar, mas paulo esta certo, tentem usar esta funcao com uma imagem peq pra "ampliar" ela, ela fica toda distorcida, so fica bem com reducao de imagem...sera q tem alguma funcao para ampliar e reduzir ao mesmo tempo....? Compartilhar este post Link para o post Compartilhar em outros sites
Paulo de Tarso F. M. 24 Denunciar post Postado Abril 5, 2007 lamento informar, mas paulo esta certo, tentem usar esta funcao com uma imagem peq pra "ampliar" ela, ela fica toda distorcida, so fica bem com reducao de imagem...sera q tem alguma funcao para ampliar e reduzir ao mesmo tempo....?Meu caro Igor.php, naturalmente, nesse caso, ela vai mesmo ficar distorcida, porque você já tem uma imagem com uma resolução X e você quer deixá-la com XX. Se você aumentar essa imagem, seja lá qual for o método, se é na própria imagem (no Photoshop, por exemplo, aumentar no Image Size), seja via código (qualquer um, JS, HTML, PHP...), você vai ter uma perda da qualidade porque a "nova imagem" gerada estará interpolada... Ou seja, serão criados "novos pixels" baseados em cálculos matemáticos, mas que não fazem parte da imagem original... O que quero dizer é que a qualidade depende da resolução da mesma... Não tem jeito... Mas a principal questão nem é tanto essa, porque mesmo se eu tiver uma imagem grande e quiser deixá-la menor via código, a renderização da imagem não vai ser de boa qualidade! Isso porque os browsers não são softwares gráficos! Eles não têm capacidade de interpolar as imagens! O que eles fazem é uma "meia interpolação", um quebra galho digamos, mas que de qualquer maneira, o resultado é horrível... Por isso reforço a idéia de que, se você quer trabalhar com manipulção de imagens, o ideal é que você tenha as mesmas já no disco com seus respectivos tamanhos, definidos em um software gráfico... Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Abimael 0 Denunciar post Postado Abril 5, 2007 Está ocorrendo este erro.Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 9216 bytes) in C:\Arquivos de programas\VertrigoServ\www\paginas\cotacao\TMP54mmsg1htp.php on line 25O código é este:<?echo reduz_imagem("DSC00216.JPG", 100, 200, "alguma.jpg");function reduz_imagem($img, $max_x, $max_y, $nome_foto) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = (100 * $max_x) / $original_x; } else { $porcentagem = (100 * $max_y) / $original_y; } $tamanho_x = $original_x * ($porcentagem / 100); $tamanho_y = $original_y * ($porcentagem / 100); $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); $image = imagecreatefromjpeg($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagejpeg($image_p, $nome_foto, 100);}?> Compartilhar este post Link para o post Compartilhar em outros sites