Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nielsen Tomazini

Fazer cópia de arquivo jpg reduzido

Recommended Posts

Olá pessoal,Gostaria de saber se é possível fazer cópia de um arquivo de imagem via php.É o seguinte, estou trabalhando em uma galeria de fotos que será exibida no Flash, tenho uma pasta que é imagens e a outra que é Thumbs. Já criei o sistema de upload de imagens para os usuários e eu gostaria que ao fazer o upload, fosse criado uma cópia reduzida da imagem e colocada dentro da pasta thumbs.Fazer a imagem ficar menor na tela já fiz, mas eu gostaria de salvar imagem, reduzida, alguém poderia me dar uma ajuda?Valeu!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

 

Claro que tem como... Eu comecei a criar uma classe para isso, img.class.php. vou passar o método responsável pela criação de thumbs. Funciona perfeitamente, precisa da biblioteca GD.

 

/**				/brief Gera Thumb				/Author Márcio Moreira				/email marcio@mmoreira.com.br		*/		function resize($iWidth,$iMinWidth=0,$strPath="") {				if ($iMinWidth > 0) {						if ($this->width <= $iMinWidth) {								return "ERR_MIN_SIZE";						}				}				//Verifica se o arqgumento de largura �valido				if (!is_integer($iWidth)) {						return "ERR_WIDTH_NO_INTEGER_SIZE";				}				//Verifica o tipo de imagem				if($this->mime_type == "image/pjpeg" || $this->mime_type == "image/jpeg"){						$new_img = imagecreatefromjpeg($this->path);				} elseif ($this->mime_type == "image/x-png" || $this->mime_type == "image/png"){						$new_img = imagecreatefrompng($this->path);				} elseif ($this->mime_type == "image/gif"){						$new_img = imagecreatefromgif($this->path);				}				//Medidas novas para imagem				if ($this->ratio>1){						$newwidth = $iWidth;						$newheight = $iWidth/$this->ratio;				}else{						$newheight = $iWidth;						$newwidth = ($iWidth*$this->ratio);				}				//Faz o redesenho da imagem para as novas medidas				if (function_exists(imagecreatetruecolor)){						$resized_img = imagecreatetruecolor($newwidth,$newheight);				}else{						return "ERR_NO_GD_LIBRARY_2_PRESENT";				}				//Verifica se a imagem vai ser salva				if (is_writable($strPath)) {						$this->strPathThumb = $strPath;						$this->strImgThumbName = $this->file;// . "_thumb";						$this->strExtThumb = $this->ext;						imagecopyresized($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $this->width, $this->height);						//Salva img						ImageJpeg ($resized_img,$this->strPathThumb.$this->strImgThumbName.".".$this->strExtThumb);						ImageDestroy ($resized_img);						ImageDestroy ($new_img);						//Retorna o caminho do thumb criado						return $this->strPathThumb.$this->strImgThumbName.".".$this->strExtThumb;				} else {						return "ERR_PATH_NO_WRITABLE_RESIZE";				}		}

É isso ae :D

 

Lembrando que esse método foi tirado de uma classe pronta, logo precisa de algumas adaptações.

Precisa arrumar alguns atributos que eu chamo no método construtor.

$this->path // Caminho da imagem

$this->width x $this->height // Dimensão da imagem

 

 

Qualquer coisa só postar e perguntar!

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Márcio,Muito obrigado por responder meu tópico. Infelizmente não consegui fazer rodar, mas, sem dúvidas o problema não é seu script e sim a minha imaturidade no php, sou um amador e ainda tenho muito o que aprender.Eu não entendo como o arquivo será chamado e como ele será jogado na minha pasta thumbs.Você disse que criou uma classe (img.class.php). Isso quer dizer que devo copiar seu script e salvar como img.class.php, certo?Mas, como ele vai puxar a minha imagem?Perdoe-me a ignorância, é que fiquei perdido, quando copiei seu script pensei que eu deveria colocar o nome do arquivo em $strPath="" e rodar mas não funciona, sei que estou fazendo algo errado.Vamos para algo prático.Tenho um arquivo jpg na minha pasta raiz. Dentro da pasta raiz tenho o meu arquivo thumbs.php e o img.class.php certo? Além disso tenho a imagem que é bolinha.jpg.O que deveria fazer? Dentro de thumbs.php eu faço:resize(100,$iMinWidth=0,$strPath="bolinha.jpg") Seria isso? Ou estou mais perdido do que imagino?Outra pergunta: O arquivo reduzido será gravado com outro nome? É isso?Márcio, mais uma vez obrigado por sua ajuda e atenção.Valeu!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, mecher com GD é fácil, dê um procurada na busca ou uma olhada no phpbrasil.com que deve ter vários tutoriais, fica mais fácil assim, você não fica dependendo de classes prontas e pode fazer exatamente o que você quer, no teu caso acredito que não seja necessário mais do q 4 funções. Quanto a salvar a miniatura em uma determinada pasta, é só você usar o segundo parâmetro da função imagejpeg (ou similar). Se você não sabe como abrir uma imagem, recomendo a ler esses tutoriais do phpbrasil q falei, vão te ajudar e muito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta usar esta função:

function reduz_imagem($verificaTmpname, $nome_foto, $extensaoo, $tamano, $larg, $altu) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = $tamano; $original_x = $width; $original_y = $height; // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = (100 * $larg) / $original_x; } else { $porcentagem = (100 * $altu) / $original_y; } $tamanho_x = $original_x * ($porcentagem / 100); $tamanho_y = $original_y * ($porcentagem / 100); $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); if($extensaoo == 'jpeg' || $extensaoo == 'jpg'|| $extensaoo == 'pjpeg') { if (function_exists('imagejpeg')) { $image = imagecreatefromjpeg($verificaTmpname); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagejpeg($image_p, $nome_foto, 100); } else { echo('Sem suporte para este tipo de imagem - ' . $extensaoo . '<br/>'); return false; } } else { if($extensaoo == 'png') { if (function_exists('imagepng')) { $image = imagecreatefrompng($verificaTmpname); imagealphablending($image_p, false); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); imagesavealpha($image_p, true); return imagejpeg($image_p, $nome_foto); } else { echo('Sem suporte para este tipo de imagem - ' . $extensaoo . '<br/>'); return false; } } else { if($extensaoo == 'gif') { if (function_exists('imagegif')) { $image = imagecreatefromgif($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagegif($image_p, $nome_foto, 100); } else { $clr['red']=255; $clr['green']=255; $clr['blue']=255; $imagEN = gif2jpeg($verificaTmpname, $nome_foto, $clr, $image_p, $tamanho_x, $tamanho_y, $width, $height); if($imagEN) { return $imagEN; } else { echo('Sem suporte para este tipo de imagem - ' . $extensaoo . '<br/>'); } } } } } }//fim reduz_imagem

uso:$arquivo = isset($_FILES["fotos"]) ? $_FILES["fotos"] : FALSE;$Nome = $arquivo['name']; // nome verdadeiro do arquivo$Tamanho = $arquivo['size']; // tamanho do arquivo em bytes$Tipo = $arquivo['type']; // tipo do arquivo$Tmpname = $arquivo['tmp_name']; //nome temporário$dimensaoImage = getimagesize($Tmpname);reduz_imagem($Tmpname, $endFotoPequena, $extensao, $dimensaoImage, $auxImagex, $auxImagey);variáveis que não foram explicadas:$endFotoPequena é o caminho e o nome que a nova imagem terá$extensao é a extensão do arquivo enviado$auxImagex é a largura que a imagem terá$auxImagey é a altura que a imagem teráOBS: a função só trabalha com arquivos de imagens jpg, jpeg, gif e png, a parte de verificação da imagem fica por sua conta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.