Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal!
Estou querendo fazer um thumb de cada imagem que eu fazer upload, mas só envia a original, os thumbs não estão enviando.
Segue o código
if(!empty($foto_pequena))
{
//$foto_pequena: nome da foto
$foto_pequena_nome = $t."_".$foto_pequena;
if(move_uploaded_file($_FILES[foto_pequena][tmp_name], "imagens/".$foto_pequena_nome)){
$img = imagecreatefromjpeg("imagens/".$foto_pequena_nome);
$he = imagesx($img);
$wi = imagesy($img);
$x = ($he/100)*20;
$y = ($wi/100)*20;
$img_nova = imagecreatetruecolor($x,$y);
imagecopyresampled($img_nova,$img,0,0,0,0,$x,$y,$he,$wi);
imagejpeg($img_nova,"imagens/".$foto_pequena_nome,90);
imagejpeg($img,"imagens/".$foto_pequena_nome,100);
imagedestroy($img_nova);
imagedestroy($img);
}
}
Não sei onde está o erro.
Valeu galera!
Mas teria como fazer com que a foto que faço upload fique do tamanho desejado?????
Como seria pra fazer isso, ele criaria um novo tamanho e apagaria a original!
Valeu
Então cara para tratamento de imagens que foram feitas em upload eu particularmente prefiro utilizar a classe Canvas.
Fazendo isso você já cria uma thumb com 400x200 cortando o que sobrar da imagem
$arquivoNovo = "img/foto.jpg";
require_once( 'canvas.php' );
$img->carrega( $_FILES['foto_pequena']['tmp_name'] )
->redimensiona( 400, 200, 'crop' )
->grava( $arquivoNovo );
Já dessa forma deixa com 400px de largura com altura variavel
require_once( 'canvas.php' );
$img->carrega( $_FILES['foto_pequena']['tmp_name'] )
->redimensiona( 400 )
->grava( $arquivoNovo );
E por ai vai, vendo o link que te passei você verá que é muito simples.
E se tiver que criar varias dimensões diferentes para um único arquivo só instanciar varios objetos:
$arquivoNovo = "img/foto"; // NOME DO ARQUIVO SEM A EXTENSÃO
require_once( 'canvas.php' );
$grande->carrega( $_FILES['foto_pequena']['tmp_name'] )
->redimensiona( 640, 480, 'crop' )
->grava( $arquivoNovo.'_G.jpg' );
$medio->carrega( $_FILES['foto_pequena']['tmp_name'] )
->redimensiona( 300, 200, 'crop' )
->grava( $arquivoNovo.'_M.jpg' );
$pequeno->carrega( $_FILES['foto_pequena']['tmp_name'] )
->redimensiona( 100, 100, 'crop' )
->grava( $arquivoNovo.'_P.jpg' );
Crio instancias $pequeno, $medio, $grande pois cada um é um objeto.
Dai em cima da imagem que foi feita o upload $_FILES['foto_pequena']['tmp_name'] eu redimenciono cada uma com o tamanho que desejo e gravo cada um com um final diferente no nome.
img/foto_G.jpgimg/foto_M.jpg
img/foto_P.jpg
Abraço
^_^
Muito obrigado, vou estudar um pouco sobre essa parte, é muito interessante, fico muito grato irmão, valeu..
Não estou conseguindo fazer essa interligação com meu código, não está redimencionando minha imagem, pq???
[resolvido]
Valeu galera pela atenção, consegui resolver o problema.
Segue o código.
if(!empty($foto_pequena))
{
//$foto_pequena: nome da foto
//pegando a foto, fazendo o upload
$foto_pequena_nome = $t."_".$foto_pequena;
move_uploaded_file($_FILES[foto_pequena][tmp_name], "imagens/".$foto_pequena_nome);
//pegando as dimensoes reais da imagem, largura e altura
list($width, $height) = getimagesize("imagens/".$foto_pequena_nome);
//setando a largura da miniatura
$new_width = 300;
//setando a altura da miniatura
$new_height = 300;
//gerando a a miniatura da imagem
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg("imagens/".$foto_pequena_nome);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
//o 3º argumento é a qualidade da miniatura de 0 a 100
imagejpeg($image_p, "imagens/p_".$foto_pequena_nome, 100);
imagedestroy($image_p);
}
você está usando sempre o mesmo nome
provavelmente a imagem está sendo sobrescrita