Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Cálculo de largura proporcional de uma imagem...


cassianooliver

Pergunta

Pessoal, to com um probleminha...

tenho esse script pra redimensionar imagem...

<?php
header("Content-type: image/jpeg");

# Informa a imagem a ser redimensionada
$img      = imagecreatefromjpeg($_GET['imagem']);

# Informações originais sobre a imagem
$largurao = imagesx ($img); // largura original
$alturao  = imagesy ($img); // altura original
$larguran = 400; // largura nova
$alturan  = 300; // altura nova

#Criando a nova imagem
$nova     = imagecreatetruecolor ($larguran, $alturan);
imagecopyresized ($nova, $img, 0, 0, 0, 0, $larguran, $alturan, $largurao, $alturao);
imagejpeg ($nova);
imagedestroy ($nova);
imagedestroy ($img);
?>
Do jeito que está aí, tá funcionando... Mas quero mudar a $larguran, deixando seu valor sempre proporcional, independente do tamanho original da imagem... fiz o cálculo da seguinte forma...
$larguran = ($largurao * $alturan) / $alturao

mas dá dando erro no script, o cálculo está correto...

mas o script não ta funcionando....

dá o seguinte erro...

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\Arquivos de programas\Apache Group\Apache\htdocs\v2.0\administracao\galerias\redimensiona_foto.php on line 14

Warning: imagecopyresized(): supplied argument is not a valid Image resource in C:\Arquivos de programas\Apache Group\Apache\htdocs\v2.0\administracao\galerias\redimensiona_foto.php on line 15

Warning: imagejpeg(): supplied argument is not a valid Image resource in C:\Arquivos de programas\Apache Group\Apache\htdocs\v2.0\administracao\galerias\redimensiona_foto.php on line 16

Warning: imagedestroy(): supplied argument is not a valid Image resource in C:\Arquivos de programas\Apache Group\Apache\htdocs\v2.0\administracao\galerias\redimensiona_foto.php on line 17

Ah, e outra coisa, as imagens estão ficando com a qualidade não muito boa...

tem como ajustar isso?

Editado por cassianooliver
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

você precisa achar a escala correta, algo assim

$esc_x = $larguran / $largurao;
$esc_y = $alturan / $alturao;

//e dai escolher a maior para ser a escala da foto
if ( $esc_x > $esc_y ) {
   $escala = $esc_x;
}
else {
   $escala = $esc_y;
}

...

imagecopyresized ($nova, $img, 0, 0, 0, 0, $larguran, $alturan, $largurao*$escala, $alturao*$escala);

Link para o comentário
Compartilhar em outros sites

  • 0

mas aí não ficará como quero, quero que as imagens tenham uma altura fixa...

consegui resolver..

<?php
header("Content-type: image/jpeg");

# Informa a imagem a ser redimensionada
$img      = imagecreatefromjpeg($_GET['imagem']);

# Informações originais sobre a imagem
$largurao = imagesx ($img); // largura original
$alturao  = imagesy ($img); // altura original
$alturan  = 300; // altura fixa
$larguran = ($largurao * $alturan) / $alturao; // nova largura


#Criando a nova imagem
$nova     = imagecreatetruecolor ($larguran, $alturan);
imagecopyresized ($nova, $img, 0, 0, 0, 0, $larguran, $alturan, $largurao, $alturao);
imagejpeg ($nova);
imagedestroy ($nova);
imagedestroy ($img);
?>
apenas troquei essas duas linhas de posição...
$alturan  = 300; // altura fixa
$larguran = ($largurao * $alturan) / $alturao; // nova largura
ta funcionando... e na qualidade...
imagejpeg ($nova, '', 90);

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652,1k
×
×
  • Criar Novo...