Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal.
Seguinte, trabalho as imagens ao fazer um upload para um servidor da seguinte forma:
Obs. não consegui usar o recurso (codigo) do forum
$caminho_imagem = "../../images/";
move_uploaded_file($_FILES["imagem"]["tmp_name"][$i],
$caminho_imagem."/".$_FILES["imagem"]["name"][$i]);
$imagem_original = $caminho_imagem."/".$_FILES["imagem"]["name"][$i];
$ImageSizep = GetImageSize($imagem_original);
$largura_original = $ImageSizep[0];
$altura_original = $ImageSizep[1];
$largura_maxima_ampliada = 900;
$tam_ampliada = $largura_maxima_ampliada * 100 / $largura_original;
$largura_ampli = $largura_original / 100 * $tam_ampliada;
$altura_ampli = $altura_original / 100 * $tam_ampliada;
$imagem_gerada_ampli = $_POST["cod"]."_".$i.".jpg";
$imagem_orig_ampli = ImageCreateFromJPEG($imagem_original);
$pontoXp = ImagesX($imagem_orig_ampli);
$pontoYp = ImagesY($imagem_orig_ampli);
$imagem_fin_ampli = ImageCreateTrueColor($largura_ampli, $altura_ampli);
ImageCopyResampled($imagem_fin_ampli, $imagem_orig_ampli, 0, 0, 0, 0, $largura_ampli+1, $altura_ampli+1, $pontoXp, $pontoYp);
ImageJPEG($imagem_fin_ampli, $caminho_imagem."/".$imagem_gerada_ampli);
ImageDestroy($imagem_orig_ampli);
ImageDestroy($imagem_fin_ampli);
$largura_maxima_mini = 180;
$tam_mini = $largura_maxima_mini * 100 / $largura_original;
$largura_mini = $largura_original / 100 * $tam_mini;
$altura_mini = $altura_original / 100 * $tam_mini;
$imagem_gerada_mini = $_POST["cod"]."_".$i.".jpg";
$imagem_orig_mini = ImageCreateFromJPEG($imagem_original);
$pontoXp = ImagesX($imagem_orig_mini);
$pontoYp = ImagesY($imagem_orig_mini);
$imagem_fin_mini = ImageCreateTrueColor($largura_mini, $altura_mini);
ImageCopyResampled($imagem_fin_mini, $imagem_orig_mini, 0, 0, 0, 0, $largura_mini+1, $altura_mini+1, $pontoXp, $pontoYp);
ImageJPEG($imagem_fin_mini, $caminho_imagem."/thumbs/".$imagem_gerada_mini);
ImageDestroy($imagem_orig_mini);
ImageDestroy($imagem_fin_mini);
unlink($imagem_original);
$img = $imagem_gerada_ampli;
Funciona perfeito, criando uma imagem grande e uma miniatura.
Porém a qualidade da imagem fica ruim.
Alguém pode me explicar como posso resover isso?
Boa tarde Bruno.
Obrigado por responder.
Neste caso o script ficaria assim?
ImageCopyResampled($imagem_fin_ampli, $imagem_orig_ampli, 0, 0, 100, 0, $largura_ampli+1, $altura_ampli+1, $pontoXp, $pontoYp);
Pois desta forma a imagem está ficando cortada.
é que relmente para este caso precisaria da qualidade total da imagem, e está ficando com uns 70% somente
ok, resolvido, coloquei um parametro a mais na função e deu certo.
Mesmo assim dá uma desconfigurada na imagem, perdendo uns 10% a qualidade.
Mas ok.
obrigado pela luz Bruno!
Verifique as definições das outras funções utilizadas pelo script.
Não estou dizendo que está errado mas, sSe você não efetuar o cálculos corretamente ao atribuir os argumento de imagecopyresampled(), o resultado final ficará distorcido o que se assemelha à uma perda de qualidade.
Bruno, obrigado pelas dicas.
Assunto já resolvido conforme as tuas instruções.
Muito obrigado!
Quem controla a qualidade da imagem é a função que efetivamente a cria, no seu caso imagejpeg().
Você pode controlar a qualidade através do terceiro argumento que pode variar de 0 a 100, quanto maior o valor melhor a qualidade e maior o tamanho do arquivo.
Porém o valor padrão dessa função, utilizado se omitido é 75, o que não é ruim e, por ser uma miniatura é mais do que suficiente, considerando que o mesmo procedimento, se feito num editor de imagens receberia no máximo 60.
Mas você quem sabe :thumbsup: