Quarta-feira, 13 de outubro de 2004 às 13h22

Sistema de imagens - Parte 05

Fala galera!

Essa semana criaremos a opção para fazer o redirecionamento de imagens. Informaremos o diretório, a palavra chave (usada para a criação do diretório que estará recebendo as novas imagens) e a largura/altura em pixels.

O script abaixo foi montado da forma mais simples possível para que seja de fácil entendimento ao leitor. É claro que faltam muitos acertos que devem ser feitos como validações de campos entre outras coisas que no decorrer dessa série acrescentaremos. Espero contar com a ajuda de todos para que, ao final, esse sistema possa ser útil a toda comunidade.

Vamos lá:

Menu do sistema

config.php

Foi adicionado uma variável que será a responsável por guardar os path onde as imagens novas serão geradas.

<?
//CAMINHO DAS IMAGENS A SEREM GUARDADAS
$c_pathimg = "c:/pagina/imasters/106/convertida";
?>

Opção: redirecionamento de imagens

Escolhendo essa opção o usuário deverá preencher os campos abaixo:

Diretório a ser lido: Informar o path completo onde se encontram as fotos para serem redirecionadas.

Palavra chave: Diretório a ser criado para armazenar as novas fotos (exemplo: teste)

Largura: Informar a largura em pixels da nova imagem (exemplo: 300)

Altura: Informar a altura em pixels da nova imagem (exemplo: 300)

* Todos os campos são de preechimento obrigatório

redimensiona.php

Arquivo responsável por efetuar o redimensionamento.

<?
//RECEBE OS DADOS DO FORMULÁRIO
$v_diretorio = $_POST[txtDiretorio];
$v_chave = $_POST[txtChave];
$v_largura = $_POST[txtLargura];
$v_altura = $_POST[txtAltura];

//VARRE AS IMAGENS DO DIRETÓRIO (FUNÇÃO CONTIDA NO ARQUIVO funcoes.php)
$imagens = RetImagens($v_diretorio);

$redireciona = RedImagens($v_diretorio, $v_chave, $v_largura, $v_altura);
?>

Função RetImagens() - criamos no artigo da semana passada.

Função RedImagens()

<?
function RedImagens($v_diretorio, $v_descricao, $v_largura, $v_altura) {
 //GLOBAL
 
global $imagens;
 global $c_pathimg;


 //VERIFICA SE POSSUI ALGUMA IMAGEM
 
if($imagens) {
  //ATRIBUI
  
foreach($imagens as $chave => $valor) {
   //ATRIBUI
   
$arq_valido[] = $imagens[$chave][VALIDO];
   $arq_invalido[] = $imagens[$chave][INVALIDO];

  
}//FECHA FOREACH
 
}//FECHA IF(IMAGENS)


 //IMAGENS VALIDAS PARA SEREM REDIRECIONADAS
 
foreach($arq_valido as $chave => $valor) {
  //IMAGEM VÁLIDA
  
$imagem = $arq_valido[$chave];
  $caminho = $v_diretorio."/".$imagem;


  //CRIA UMA NOVA IMAGEM
  
$imagem_orig = ImageCreateFromJPEG($caminho);

  //LARGURA/ALTURA DA IMAGEM
  
$pontoX = ImagesX($imagem_orig);
  $pontoY = ImagesY($imagem_orig);


  //CRIA O THUMBNAIL
  
$imagem_fin = ImageCreateTrueColor($v_largura, $v_altura);

  //COPIA A IMAGEM
  
ImageCopyResampled($imagem_fin, $imagem_orig, 0, 0, 0, 0, $v_largura+1, $v_altura+1, $pontoX, $pontoY);

  //VERIFICA SE JÁ EXISTE A PASTA CONFORME DESCRIÇÃO
  
if(!(is_dir("$c_pathimg/$v_descricao"))) {

   //CRIA A PASTA
   
mkdir("$c_pathimg/$v_descricao", 0777);

   //DÁ PERMISSÃO DE LEITURA E DE ESCRITA NA PASTA
   
chmod("$c_pathimg/$v_descricao", 0777);
  
}//FECHA IF(is_dir)

  //SALVA A IMAGEM
  
ImageJPEG($imagem_fin, "$c_pathimg/$v_descricao/".$imagem);

  //LIBERA A MEMÓRIA
  
ImageDestroy($imagem_orig);
  ImageDestroy($imagem_fin);

 
}//FECHA FOREACH
?>

<script language="JavaScript">
<!--
 alert("ATENÇÃO\n\nVerifique se foi tudo gerado no diretório <? echo  $c_pathimg."/".$v_descricao ?>");
 window.history.go(-2);
//-->
</script>


<?
}//FECHA FUNCTION

?>

Depurando o código

Linha 170: Recebemos a var $imagens que contém as imagens do diretório varrido (foi retornada pela função RetImagens).

Linha 174 a 181: Lemos esse array e pegamos apenas as imagens válidas.

Linha 185: Lemos o array para começarmos a redirecionar imagem por imagem.

Linha 192 a 202: Redirecionamos a imagem.

Linha 204: Verificamos se a palavra chave informada existe como diretório. Caso contrário, cria a pasta.

Linha 217: Por fim, gravamos a nova imagem na pasta.

Imagens incluídas no artigo para testes

Baixando o script no link abaixo você econtra na pasta TEMP, 02 imagens para serem usadas em seus testes.

Na hora que o script pedir o diretório informe esse, ok?

Para conferir toda a série sobre o Sistema de Imagens, clique nos links abaixo:

>> Sistema de Imagens - Parte 01
>> Sistema de Imagens - Parte 02
>> Sistema de Imagens - Parte 03
>> Sistema de Imagens - Parte 04

Para baixar o script, clique no link abaixo.

DOWNLOAD

Clique AQUI e faça o download do script.

Semana que vem tem mais. Espero que vocês tenham gostado :-)

Não deixe de nos enviar críticas ou sugestões para o próximo assunto, afinal a coluna é de vocês. E lembrem-se de votar no iMasters para o iBest 2005.

Boa semana a todos. Até mais!

9 comentários

 Silas Tammerik Inácio da Silva
19/10/2004 12h59

Pra que salvar os thumbs?

Então Julio, tava olhando seu script e todo esse ultima coluna foi para redimensionar a foto e alocar ela em uma pasta certo? No caso, fazer os thumbs das fotos, mas pra que salvar os thumbs? Eu faço isso mas utilizo apenas a imagem grande da foto, gero o thumb mas não salvo, assim liberado muito mais espaço no servidor, no caso de sites de festas, onde é necessário muito espaço para guardar as fotos, quanto menos ocupar melhor. Eu pelo menos utilizo esse mesmo esquema mas não salvo os thumbs, fica a mesma coisa.

 EVERARDO CORDEIRO LIMOEIRO
20/10/2004 18h47

coluna php

acompanho a coluna php a 6meses adoro todos os artigos grato!!1

 Kélcyo Pereira
21/10/2004 10h53

Salvar thumbs!

Fala galera,
Antes de mais nada gostaria de agradecer os elogios que tenho recebido sobre essa série de sistema de imagens.
Sobre salvar ou não salvar as imagens é uma alternativa que podemos estar adicionando ao nosso sistema se esse for o interesse dos leitores.
Obrigado.
Júlio

 Silas Tammerik Inácio da Silva
21/10/2004 14h52

Script para não salvar fotos

Então, se alguem quiser ver como faço para gerar as fotos e não salvar, eu postei esses tempos o script no phpbrasil, segue o link: http://www.phpbrasil.com/scripts/source.php/id/2590

 ramon dos santos lummertz
22/10/2004 03h33

ZIP

para fechar com chave de ouro só falta duas coisa... uma enviar as fotos num arquivo .zip e cadastrar elas num bd, para podemor fazer coment ... oq vc acha?

 Murilo Elias Rodrigues
22/10/2004 17h42

Biblioteca DBX

Gostaria de parabenizar o Júlio por este "livro online" que temos disponível aqui no imasters.
Seria interessante uma matéria sobre bibliotecas de abstração de BD, falando dos tipos, vantagens e desvantagens de cada uma.
valew

 Gabriel Manzano
04/11/2004 19h54

Script

Cade o script do artigo?

 pablo bello
06/11/2004 21h14

Download...

O Download do script está com o link quebrado, vai para o erro 404

 espanka
06/02/2006 20h22

dowload

ola julio seus scripts sao show, mas onde ta o link pra baixar o SCRIPT FEITO o link da dano o erro 404 como posso conseguir o SCRIPT ?

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Sobre o Autor
Júlio César Martini atualmente presta serviços de WebMaster/Programador para o UOL (http://www.uol.com.br), Graduado em Tecnólogo em Informática pela UNIFIAN - Faculdades Anhanguera e Pós-Graduado em Desenvolvimento de Software para Web pela UFSCAR. Foi o primeiro profissional a chegar à marca de 100 artigos publicados no iMasters e trabalha com PHP desde 2000. Site: http://www.juliocesarmartini.com

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.