Upload e Resize de Imagens em Delphi for PHP

05/08/2009

ola estou desenvolvendo um website administrativo e estou fazendo um cadastro de produtos e um cadastro de representantes ambos tem que ter upload de imagens para o cliente colocar as fotos, preciso saber como fazer esse upload das imagens e como fazer um resize para ajustar o tamanho da foto quando o cliente fazer o upload da mesma. obrigado aguardo com urgencia
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

Curtidas 0

Respostas

Rodrigo Mourão

Rodrigo Mourão

05/08/2009

Olá Amigo,

A resposta para sua dúvida esta numa vídeo de minha autoria no site da devmedia. La eu ensino a fazer isso. Segue o link:

https://www.devmedia.com.br/articles/viewcomp.asp?comp=9432

Caso não tenha acesso a vídeo nos avise para que possamos liberá-la sem custo para você

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

05/08/2009

deu para baixar a video aula sim agora vou assistir obrigado
GOSTEI 0
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

05/08/2009

assisti a video aula mas la nao explica como fazer o resize da imagem, nao ensina como alterar e nem excluir o resize que digo e tipo o usuario escolhe uma imagem exemplo com tamanha 3 megas 3000x3000 ai eu fazer um comando para deixar por exemplo com 300x300 preciso disso com urgencia obrigado
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

05/08/2009

Fazer na Mão da muito trabalho.

User esta calsse aqui:

http://m2brimagem.googlecode.com/files/m2brimagem.class.0.6.3.php

Veja um exemplo:

<?php  
include('m2brimagem.class.php'); 


$oImg = new m2brimagem('1.jpg');  
$valida = $oImg->valida();  
if ($valida == 'OK') {  
    $oImg->redimensiona(200,200,'crop');  
    $oImg->grava();  
} else {  
    die($valida);  
}  
exit;  
?> 


Basta usar a superglobal $_FILES, passar o caminho da imagem que vc quer redimensionar e fazer como no exemplo assim. Existem varios exemplos prontos na web (m2brimagem), eu sempre baixo copio e colo nos meus projetos e bem simples.

Abs !!!

GOSTEI 0
Devmedia

Devmedia

05/08/2009

Eleandro,

a resposta do consultor foi suficiente? Podemos encerrar o chamado?
GOSTEI 0
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

05/08/2009

nao consegui incorporar em meu projeto o arquivo que vc me mandou para imagem nao se tiver algum exemplo de como eu faria
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

05/08/2009

E simples,

Copie o arquivo m2brimagem.class.php para a pasta do seu projeto. Depois abra o Form onde vai fazer o upload da imagem e junto com os outros uses no topo do form coloque include('m2brimagem.class.php');


Feito isso no evento em que vc trata o upload do seu arquivo vc coloca o codigo que que postei enteriormente.

$oImg = new m2brimagem('1.jpg');  
$valida = $oImg->valida();  
if ($valida == 'OK') {  
    $oImg->redimensiona(200,200,'crop');  
    $oImg->grava();  
} else {  
    die($valida);  
}  
exit; 

Como eu falei anteriormento o nome da imagem ai e 1.jpg, vc tem que mudar para a imagem que vc esta postando, como vc pega isso? Através da superglobal $_FILES. Na video que eu lhe passei eu mostro como fazer isso. Acabei de assisteir agora e la eu falo dos parametros name, temp_name, etc etc etc

Abs,

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

05/08/2009

ok tem alguma video aula que ensina como fazer o upload usando banco de dados?
GOSTEI 0
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

05/08/2009

olha estou fazendo meu upload assim igual vi em uma materia na revista clube delphi   global $DMPrincipal;
      if($_FILES['UploadFile']['name'] != "")
      {
         $diretorio = "C:/wamp/www/Estofados Solar/adm/upload/sofas/n" . $DMPrincipal->QRCad_Prod->id_prod . "/";
         if(!is_dir($diretorio))
         {
            mkdir($diretorio);
         }
         $nome_arquivo = $diretorio . $_FILES['UploadFile']['name'];
         move_uploaded_file($_FILES['UploadFile']['tmp_name'], $nome_arquivo);                     $oImg = new m2brimagem('UploadFile'); //UploaFile é meu component que uso para upload mas assim sempre
                                                                                         $valida = $oImg->valida();                       
         if($valida == 'OK')
         {
            $oImg->redimensiona(200, 200, 'crop');
            $oImg->grava();
         }
         else
         {
            die($valida);
         }
         exit;       }
GOSTEI 0
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

05/08/2009

olha estou fazendo meu upload assim igual vi em uma materia na revista clube delphi   global $DMPrincipal;
      if($_FILES['UploadFile']['name'] != "")
      {
         $diretorio = "C:/wamp/www/Estofados Solar/adm/upload/sofas/n" . $DMPrincipal->QRCad_Prod->id_prod . "/";
         if(!is_dir($diretorio))
         {
            mkdir($diretorio);
         }
         $nome_arquivo = $diretorio . $_FILES['UploadFile']['name'];
         move_uploaded_file($_FILES['UploadFile']['tmp_name'], $nome_arquivo);                     $oImg = new m2brimagem('UploadFile'); //UploaFile é meu component que uso para upload mas assim sempre
                                                                          //da o erro de arquivo nao encontrado tenho certeza que o erro                                                                                //está na linha $oImg = new m2brimagem('UploadFile') aonde vc                                                                           //colocou 1.jpg nao sei o que devo colocar pq nao ira cadastrar                                                                           //sempre a mesma fot, sera uma foto para cada produto          $valida = $oImg->valida();                       
         if($valida == 'OK')
         {
            $oImg->redimensiona(200, 200, 'crop');
            $oImg->grava();
         }
         else
         {
            die($valida);
         }
         exit;       }
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

05/08/2009

Olá Amigo sua logica esta perfeita, porem na hora de passar nao tem que passar o nome do compoentne não (Linha em vermelho) tem que passar a imagem ( Linha Azul )

global $DMPrincipal;
      if($_FILES['UploadFile']['name'] != "")
      {
         $diretorio = "C:/wamp/www/Estofados Solar/adm/upload/sofas/n" . $DMPrincipal->QRCad_Prod->id_prod . "/";
         if(!is_dir($diretorio))
         {
            mkdir($diretorio);
         }
         $nome_arquivo = $diretorio . $_FILES['UploadFile']['name'];
         move_uploaded_file($_FILES['UploadFile']['tmp_name'], $nome_arquivo);                     $oImg = new m2brimagem('UploadFile'); Errado

           $oImg = new m2brimagem($nome_arquivo); Correto
     
         $valida = $oImg->valida();                       
         if($valida == 'OK')
         {
            $oImg->redimensiona(200, 200, 'crop');
            $oImg->grava();
         }
         else
         {
            die($valida);
         }
         exit;       }

Espero ter ajudado !!
Abs !!
GOSTEI 0
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

05/08/2009

opa funcionou sim mas tem um detalhe ele faz o rezise certinho ate mostra na tela, mas nao grava com o rezise na pasta, ta gravando com o tamanho normal da imagem aguardo obrigado
GOSTEI 0
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

05/08/2009

opa funcionou sim mas tem um detalhe ele faz o rezise certinho ate mostra na tela, mas nao grava com o rezise na pasta, ta gravando com o tamanho normal da imagem meu codigo esta assim  
      global $DMPrincipal;       if($_FILES['UploadFile']['name'] != "")
      {
         $diretorio = "C:/wamp/www/Estofados Solar/adm/upload/sofas/n" . $DMPrincipal->QRCad_Prod->id_prod . "/";
         if(!is_dir($diretorio))
         {
            mkdir($diretorio);
         }
         $nome_arquivo = $diretorio . $_FILES['UploadFile']['name'];
         move_uploaded_file($_FILES['UploadFile']['tmp_name'], $nome_arquivo);          $oImg = new m2brimagem($nome_arquivo);
         $valida = $oImg->valida();
         if($valida == 'OK')
         {
            $oImg->redimensiona(200, 141, 'resize');
            $oImg->grava();
         }
         else
         {
            die($valida);
         }
         exit;   aguardo obrigado
GOSTEI 0
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

05/08/2009

ei amigo estou aguardando a resposta de minha pergunta ainda preciso disso com urgencia pra poder soltar o serviço de meu cliente só falta isso pra terminar meu projeto aguardo com urgencia
GOSTEI 0
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

05/08/2009

opa funcionou sim mas tem um detalhe ele faz o rezise certinho ate mostra na tela, mas nao grava com o rezise na pasta, ta gravando com o tamanho normal da imagem meu codigo esta assim  
      global $DMPrincipal;       if($_FILES['UploadFile']['name'] != "")
      {
         $diretorio = "C:/wamp/www/Estofados Solar/adm/upload/sofas/n" . $DMPrincipal->QRCad_Prod->id_prod . "/";
         if(!is_dir($diretorio))
         {
            mkdir($diretorio);
         }
         $nome_arquivo = $diretorio . $_FILES['UploadFile']['name'];
         move_uploaded_file($_FILES['UploadFile']['tmp_name'], $nome_arquivo);          $oImg = new m2brimagem($nome_arquivo);
         $valida = $oImg->valida();
         if($valida == 'OK')
         {
            $oImg->redimensiona(200, 141, 'resize');
            $oImg->grava();
         }
         else
         {
            die($valida);
         }
         exit;   aguardo obrigado
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

05/08/2009

Olá Amigo,

Tente redimensionar antes de mover a imagem para o diretório. Observe:

      global $DMPrincipal;       if($_FILES['UploadFile']['name'] != "")
      {
         $diretorio = "C:/wamp/www/Estofados Solar/adm/upload/sofas/n" . $DMPrincipal->QRCad_Prod->id_prod . "/";
         if(!is_dir($diretorio))
         {
            mkdir($diretorio);
         }
         $nome_arquivo = $diretorio . $_FILES['UploadFile']['name'];
        
         $oImg = new m2brimagem($_FILES['UploadFile']['tmp_name']);
         $valida = $oImg->valida();
         if($valida == 'OK')
         {
            $oImg->redimensiona(200, 141, 'resize');
            $oImg->grava();
            move_uploaded_file($_FILES['UploadFile']['tmp_name'], $nome_arquivo);
         }
         else
         {
            die($valida);
         }
         exit;

Abs!!

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi


GOSTEI 0
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

05/08/2009

ja havia tentando antes e tentei novamente mas nao da certo aparece arquivo de imagem nao encontrado
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

05/08/2009

Olá Eleandro,

Bem neste caso então uma sugestão seria validar o tamanho no envio, ou seja, assim como faz sites como orkut, Msn e outros. Caso a imagem esteja ou acima do tamanho em KB ou acima das dimensões permitidas a imagem não e submetida e um aviso e enviado ao usuario.

Repare que em alguns destes sites tem até um aviso ou alguma dica dizendo: Apenas imagens jpg são permitidas ou então dimensões máximas permitidas 150x150.

Esta verificação poderá ser feita utilizando o proprio componente uploadfile que possui metodo para retornar tipo, altura, largura e etc.

Abs !

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi


GOSTEI 0
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

05/08/2009

mais ai fica muito complicado para o usuario da parte de administracao do site e se ele nao saber redimensionar uma foto??? ai vai dar problema eu precisava disto mesmo
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

05/08/2009

Olá amigo,


Todas as dicas e orientação que estavam ao meu alcance já lhe foram passadas, infelizmente a ultima dica era realmente esta de se redimensionar a imagem antes do post, como fazem outros sites, isso e quase que um padrão na web.

Eu acredito que hoje em dia os usuarios não tenham tanta dificuldade assim para redimensionar uma foto, mas sei bem como são usuarios kkkkkkkkk.

Vale lembrar que o problema nesta caso não está relacionado ao D4PHP, ou PHP propriamente dito. Pode ser que tenha uma forma de se realizar a tarefa porém eu realizando os teste não conseguir redimensionar a foto enviada por este motivo indiquei o procedimento abaixo.

Se eu ainda puder ajudar estou as ordens !!


Abs




GOSTEI 0
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

05/08/2009

a sim ta legal entao mas vamos supor que ele mande uma imagem de 800x600 tem como eu mostrar na tela com 200x140??? pq ai nem precisaria dele mexer com esse negocio de redimensionar pq como vc mesmo disse usuario é complicado ashsauhsauhsauhassa abraço
GOSTEI 0
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

05/08/2009

deixa eu te perguntar na mesma revista edição 90 ano 7 a respeito da imagem ainda o autor fala pra colocar no OnBeforeShow do ListBox o seguinte comando $this->ListBox1->Clear(); $diretorio = "C:/CD/Jornal/fotos/n".$this->fdnoticias1->Text."/"; if (id_dir($diretorio)) {          if ($dh = opendir($diretorio)) {                    while (($file = readdir($dh)) !== false) {   } }   }
GOSTEI 0
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

05/08/2009

deixa eu te perguntar na mesma revista edição 90 ano 7 a respeito da imagem ainda o autor fala pra colocar no OnBeforeShow do ListBox o seguinte comando $this->ListBox1->Clear(); $diretorio = "C:/CD/Jornal/fotos/n".$this->fdnoticias1->Text."/"; if (id_dir($diretorio)) {          if ($dh = opendir($diretorio)) {                    while (($file = readdir($dh)) !== false) {   } }   }
GOSTEI 0
Fistsoft-sistemas Empresarial-ltda;

Fistsoft-sistemas Empresarial-ltda;

05/08/2009

deixa eu te perguntar na mesma revista edição 90 ano 7 a respeito da imagem ainda o autor fala pra colocar no OnBeforeShow do ListBox o seguinte comando $this->ListBox1->Clear(); $diretorio = "C:/CD/Jornal/fotos/n".$this->fdnoticias1->Text."/"; if (id_dir($diretorio)) {          if ($dh = opendir($diretorio)) {                    while (($file = readdir($dh)) !== false) {                                 if (filetype($diretorio.$file)) == "false") {                                       if (getimagesize($diretorio.$file)) {                                             $this->ListBox1->addItem($file); } } } }   }   nao consigo entender esta linha de comando quando ele coloca FDNOTICIAS->TEXT."/"; OBS: EM MOMENTO ALGUM ELE FALOU PARA COLOCAR ALGUM COMPONENTE COM O NOME DE FDNOTICIAS, NAO ESTOU ENTENDENDO DE ONDE ESTE COMPONENTE É COMO EU NAO SEI NAO TEM COMO EU FAZER FUNCIONAR MEU LISTBOX AQUI PRECISO DISSO COM URGENCIA OBRIGADO
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

05/08/2009

Olá só, exibir na tela no tamanho que vc quer é facil.

O componente Image do Delphi for PHP já faz isso. Pode ficar um pouco distorcida devido a formato original e formato do componente.

Basta vc carregar para a propriedade ImageSource o caminho da imagem que vc quer exibir. Basta deixar o componente Imagem no tamanho que vc quer. Agora tem que colocar a propriedade AutoSize para False e a Propriedade Stretch para True.

Assim mesmo que uma imagem de 800x600 seja enviada ao componente ele vai exibí-la no tamnaho que vc determinou no componente.

Faça o teste e me informe !!!

Abs!!

GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

05/08/2009


fdnoticias1 é o nome que o Delphi for PHP deu ao componente Edit quando vc arrasta para a tela. Para tratar deste assunto solicito que seja aberto um novo chamado pois cada duvida deve ser respondida em um chamado a aprte.

Abs!!

GOSTEI 0
POSTAR