Daviferreira.com blog

set

07

Manipulando e redimensionando imagens com PHP

comentários (64)publicado por Davi Ferreira . 07/09/2007 . 00:52

Quem nunca precisou desenvolver uma galeria de imagens? Ou até mesmo um simples módulo para destaques de um site, com o redimensionamento automático de fotos para a capa? Manipulação de imagens é uma das tarefas mais comuns em sistemas web e pode vir a ser uma tarefa chata caso toda vez você tenha que reinventar a roda e reescrever dezenas de linha de código para adequar a manipulação aos desejos do cliente.

Neste post apresento uma classe desenvolvida na agência web M2BRNET, exclusivamente para o tratamento e manipulação de imagens utilizando PHP e sua extensão GD.

A classe, apelidada de m2brimagem, ainda está em seu estágio inicial, mas já possui métodos para redimensionamento e conversão de formatos, entre outros. Algumas funções foram reaproveitadas e todos os devidos créditos acompanham o arquivo fonte.

Pré-requisitos

Para utilizar a classe, será necessário o download de sua última versão no link abaixo além de um servidor com php instalado com suporte à biblioteca GD.

m2brimagem.class.php

Exemplo 1

Agora vamos ao que interessa! Neste primeiro exemplo realizaremos um redimensionamento simples, mantendo a proporção da imagem com a opção crop.

teste.php

O primeiro passo é instanciar o objeto da classe imagem, carregando no construtor a imagem que será manipulada:

Logo na sequência validamos a imagem através do método valida. Caso o resultado seja 'OK', executamos os métodos para redimensionamento e geramos a nova imagem com saída no navegador. Se a imagem não existir, ou simplesmente não for um arquivo de imagem, o script retornará a mensagem de erro.

Clique aqui e veja o arquivo teste.php em ação!

Exemplo 2

Vamos agora dar uma leve incrementada em nosso arquivo teste.php, fazendo com que ele passe a receber via parâmetros as novas dimensões da imagem e o nome do arquivo, permitindo assim o redimensionamento on the fly:

A imagem abaixo está sendo redimensionada em tempo real utilizando o exemplo anterior (confira aqui a imagem original).

redimensionamento em tempo real

Exemplo 3

E que tal varrer todo um diretório, criar thumbnails e ao mesmo tempo manter as imagens originais? Alguém aí falou em galeria de imagens?

Voilá! No exemplo acima, o script varre o subdiretório galeria, procura por arquivos do tipo JPG e cria suas miniaturas dentro de galeria/thumbs/.

Exemplos rápidos

Confira alguns outros métodos da classe m2brimagem em ação:

Marca d'água

marca d'água

Flip

flip horizontal

Texto / legenda

legenda em texto

Como citei no início deste post, a classe ainda está em um estágio inicial do desenvolvimento. Diversas melhorias já estão na nossa lista. Para participar e acompanhar o desenvolvimento, enviar comentários, dúvidas e correções, acesse a página do projeto no Google Code.

Atualizações [26/11/2008]

O leitor Giolvani enviou uma implementação de um método para adicionar marcas d'dágua com posicionamento fixo. Segue o exemplo de uso:

marca d'água

Clique aqui para conferir todos os posicionamentos disponíveis.

Já nosso amigo CACA-[COBRA] identificou um bug no método de marcas d'água. O parâmetro alfa não estava funcionando corretamente. Na verdade, trata-se de uma limitação da biblioteca GD. Para utilizar transparência na marca d'água, é necessário usar a função imagecopymerge ao invés da imagecopy. O problema é que ela não preserva a transparência original do PNG.

A correção que fiz foi a seguinte: caso você passe um valor para alfa, a classe utilizará a imagecopymerge para criar a marca, gerando uma trasparêcia global para a imagem, mas perdendo o fundo (ou qualquer outra parte) transparente da imagem de marca original. Caso opte por preservar esta transparência original, basta passar o valor de alfa como nulo.

Para entender melhor, veja este exemplo.

Finalizando, também foram corrigidos alguns bugs, incluindo um que afetava a qualidade de imanges JPEG quando a saída era direta no navegador. O método resize (redimensionamento sem especificar crop ou fill) também foi alterado: agora seu redimensionamento não preserva a proporção, distorcendo a imagem se necessário – para manter a proporção passe somente a altura ou largura.

publicado em: Classes | PHP
envie seu comentário

64 pessoas já comentaram este artigo

 

1

14/09/2007 12:25RamonRamon

Bonito seu blog, parabéns!
Está tudo bem explicado. Gostei também que você deixou os códigos separados da numeração de linha.
Estou tentando fazer o tutorial. Quando terminar comentarei algo, ou pedirei ajuda. Sou iniciante em php e estou procurando tutorial sobre isso. Até agora nenhum funcionou de acordo com meus superficiais conhecimento.

2

17/09/2007 22:59Higor DelgadoHigor Delgado

Parabens pelo Blog, muito boa sua maneira de explicar.

Tem como você publicar como se manipula um arquivo? tipow.. gravar em memoria, testar qual o tipo, tamanho e se possível com barra de progresso?

Podia fazer 2 tutoriais um com barra e outro sem barra.

Abraço!

3

18/09/2007 00:30Davi FerreiraDavi Ferreira

Valeu pelos comentários, rapaziada :)

@Ramon: qualquer dúvida é só falar. A documentação da classe ainda é praticamente inexistente, mas espero que este post te ajude!

@Higor: tá nos meus planos um artigo sobre upload com barra de progresso etc. Assim que rolar um tempo livre.

4

24/09/2007 11:22Leo LimaLeo Lima

muito bom seu blog…parabéns

5

24/10/2007 03:50Tiago RochaTiago Rocha

Era o que eu precisava, não a galeria mas redimensionar as fotos!

valeu cara, rodei a net toda parei aqui!

Parabéns! add favoritos

6

06/03/2008 12:17fabiofabio

amigo, sua funcao, por algum motivo nao esta gerando thumb de gif animado

7

29/08/2008 18:40DaniloDanilo

Amigo..
usei este codigo..
mas aki da um erro..
que nao consigo arrumar

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}'

nao mexi em nada no codigo..
estou tentando usar o exemplo3

8

14/09/2008 22:55Davi FerreiraDavi Ferreira

@Fabio: o GD não gera gif animado mesmo, não tem como.

@Danilo: Veja se na hora de copiar o código você não esqueceu alguma coisa. Ou então repara nas aspas se estão OK, às vezes dá pau na hora de copiar/colar, tem que digitar as aspas de novo.

9

20/11/2008 18:14GiolvaniGiolvani

cara, fantástica sua biblioteca, com ela resolvei meus problemas.

Vi que tem algumas implementações a serem feitas, e tomei a iniciativa de fazer uma, fiz agora o posicionamento das marcas d'agua por constantes…

na verdade peguei a idéia de outra biblioteca, mas preferia a sua por ser em portugues…

entao como faço para mandá-la para voce para que compartilhe?!!!

abraços

10

21/11/2008 20:36CACA-[COBRA]CACA-[COBRA]

Muito boa essa classe, porem tem um "defeito" o metodo "marca()" não insere transparencia, apesar de ter uma variável que indica esse recurso.

Eu tentei pesquisar na internet sobre isso mas não encontrei nada que ajudasse.

Se vocês tiverem alguma dica sobre isso ia ser legau. :)

11

21/11/2008 21:08Davi FerreiraDavi Ferreira

@Giolvani: te mandei um e-mail :)

@Cobra: Pois é, tava mexendo nisso hoje! O problema é que tem um bug no php com relação a isso. Se você alterar lá no método marca, de imagecopy pra imagecopymerge e adicionar o alfa como último parâmetro, ele vai funcionar, só que o imagecopymerge não preserva a transparência de PNGs. Particularmente prefiro manter o alfa do PNG, mas se quiser implementa assim, no lugar do imagecopy que tá lá:


if ( is_numeric( $alfa ) && ( $alfa < 100 ) ) {
imagecopymerge( $this->img, $marcadagua, $x, $y, 0, 0, $marca_w, $marca_h, $alfa );
} else {
imagecopy( $this->img, $marcadagua, $x, $y, 0, 0, $marca_w, $marca_h );
}

12

30/11/2008 02:31TulaTula

Me ajudou bastatnte essa biblioteca! parabéns!
Só fiz uma pequena alteração para funcionar com php4. Abraço

13

30/11/2008 23:01TukaTuka

Opa… Tudo bom?? só tenho uma pergunta, como faço para tratar imagens que venham de formulário??

14

03/12/2008 03:14vitorvitor

eu consegui rodar esse script mas pra onde vai o thumb da imagem?

15

03/12/2008 03:18vitorvitor

deu errado. agora n ta rodando.
boto la pra abrir a imagem dota.jpg mas ele da o erro mostrando o diretorio q o meu projeto está.

16

03/12/2008 05:51Davi FerreiraDavi Ferreira

@Tuka: você recebe a imagem através da global $_FILES, aí fica a seu critério se você salva ela antes de tratar ou já trata direto utilizando o arquivo temporário do php ($_FILES['nome_campo']['tmp_name']). Tá aí um exemplo legal pra fazer! Só não esquece do enctype="multipart/form-data" no form.

@vitor: cola o erro completo aí pra gente ver :P Mas parece ser problema de permissão ou erro de digitação no caminho da imagem.

17

11/12/2008 12:07André G.André G.

Cara…ótimo ! tem td e mais um poco

18

14/12/2008 17:29Laecyo MarcelloLaecyo Marcello

Cara tentei usar mas esta dano erro no header não mudei nada e esta dano esse erro

19

14/12/2008 17:35Davi FerreiraDavi Ferreira

@Laecyo: Cola o erro completo aqui ou manda um link de exemplo.

20

15/12/2008 19:01Igor S.Igor S.

Olá Davi.

Primeiro gostaria de te dar os parabéns pelo seu post.

Tenho uma dúvida, para passar a imagem via form é assim que faz?
$oImg = new m2brimagem($_FILES['foto_img']['tmp_name']);

O form está com enctype="multipart/form-data", mas não funciona.

21

16/12/2008 01:05Davi FerreiraDavi Ferreira

@Igor: podecrer, num comentário acima falei pra utilizar direto o tmp_name, mas o problema é que o arquivo temporário do $_FILES vai com a extensão 'tmp', independente do formato. A classe não reconhece isso como imagem. Tem duas opções:

1) move o arquivo com move_uploaded_file pra um diretório temporário no servidor, carrega ela na classe e depois apaga com unlink. Particularmente recomendo esta, por ser mais elegante :)

2) modificar a classe pra aceitar também a extensão tmp. Não tem problema de segurança porque além da extensão também valida se é um arquivo de imagem ou não. Basicamente é adicionar nos métodos eImagem, criaImagem e grava, onde tiver jpg, a extensão tmp.

Qualquer coisa me manda um e-mail no form de contato abaixo que eu te mando exemplos de código disso!

22

20/12/2008 17:54RockyRocky

Ótima classe, estou implementando algumas funções que eu tinha feito para uma classe minha. Assim que estiver tudo ok lhe passo.

23

26/12/2008 15:06MarcosMarcos

Parabéns!

Denota que tens sólidos conhecimentos de PHP e que tens muita vontade e disposição em ajudar.

Uma abraço!

24

30/01/2009 16:14Vinicius SalsottoVinicius Salsotto

Cara, voce já fez sua boa ação de hoje!

Salvou uma vida, a minha!

Perfect! Totalmente Perfect essa classe!

Da até para fazer chover com ela! hehehe

Parabéns e Obrigado!

25

05/02/2009 17:28JulioJulio

Parabéns pela biblioteca, muito útil mesmo.
Só gostaria de tirar uma dúvida.
Qual modificação precisa ser feita para funcionar no Php4?
TRabalho com o php5, mas existe um cliente meu que ja tem contrato com um servidor que da superte a php4.
Se alguem puder me ajudar eu agradeço!
Atenciosamente
Julio Pucciarelli

26

05/02/2009 18:07Davi FerreiraDavi Ferreira

@Julio: basicamente é remover os 'public', 'private' etc. Tudo que for orientação a objeto. Depois posso te mandar uma versão php4 se você tiver muita dificuldade em portar. :)

27

06/02/2009 01:27JulioJulio

Obrigado Davi, acho que dou conta, mais qualquer problema eu peço socorro!
Muito Obrigado!

28

09/02/2009 23:50Marcos ZachariasMarcos Zacharias

Caro Davi. Muito legal seu blog.
So tem um porem, quando dimensiono um JPG ta dando pau.
o erro é o seguinte call undefined function imagecreatefromjpeg() in m2brimagem.class.php on line 185.
Pois bem eu to tentando implementar um programa em php-gtk pra dimensionar fotos com esta biblioteca, ja que trabalho em um site de jornalismo e redimensionar cada uma no photoshop demora demais.
Pergunto oq esta errado para acusar este erro?
segue o código php


include('m2brimagem.class.php');
$janela = new GtkWindow();
$area= new GtkFixed();
$Rotulo = new GtkLabel('Informe o diretorio a ser processado');
$textbox = new GtkEntry();
$largura = new GtkEntry();
$altura = new GtkEntry();
$processa= new GtkButton('Processa Imagens',true);
$processa->connect_simple('clicked','processa_imagem');
$Rotulo2 = new GtkLabel('Informe a largura da imagem');
$Rotulo3= new Gtklabel("Informe a altura da imagem");
$area->put($Rotulo,2,10);
$area->put($textbox,2,25);
$area->put($processa,2,150);
$area->put($Rotulo2,2,50);
$area->put($largura,2,65);
$area->put($Rotulo3,2,90);
$area->put($altura,2,105);
$janela->add($area);
$janela->set_title("SBSCidade - Sistema redimencionador de fotos");
$janela->set_default_size(400,200);
$janela->set_position(GTK::WIN_POS_CENTER);
$janela->show_all();
function processa_imagem()
{
// instancia objeto m2brimagem
$oImg = new m2brimagem();
// define diretórios
$diretorio = 'galeria/';
$dir_thumbs = $diretorio.'thumbs/';
// varre diretório com as imagens originais
$arquivos = scandir($diretorio);
// lista arquivos do diretório
// e pega somente os de extensão jpg ou jpeg
foreach($arquivos as $arquivo) {
if(eregi(".+.[jJ][pP][eE]?[gG]$", $arquivo)) {
// "carrega" arquivo
$oImg->carrega($diretorio.$arquivo);
$valida = $oImg->valida();
if ($valida == 'OK') {
// redimensiona
$oImg->redimensiona(80,80,'crop');
// salva no diretório das miniaturas
$oImg->grava($dir_thumbs.$arquivo,true);
echo "Miniatura criada para "
. $diretorio.$arquivo
. "";
} else {
echo "Erro ao criar miniatura para "
. $diretorio.$arquivo
. ": " . $valida . "";
}
}
}
}
GTK::Main();

Grato Marcos Zacharias.
OBS: O programa ainda não ta 100% pronto

29

10/02/2009 00:40Davi FerreiraDavi Ferreira

@Marcos: esse erro rola quando a biblioteca GD não está configurada/instalada no php. Infelizmente não sei como funciona com o php-gtk. Vou dar uma pesquisada e qualquer coisa te falo! Caso não role GD com GTK (o que acho difícil), a solução seria fazer uma aplicação rodando em um apache instalado na máquina, no browser.

P.S. Organizei seus comentários, espero que não se importe :)

30

10/02/2009 11:10Marcos ZachariasMarcos Zacharias

grato Davi, tanto pela dica e por organizar o comentário.
A questão é onde consigo a GD pra instalar junto com o GTK e terminar o projeto?

31

10/02/2009 11:39Marcos ZachariasMarcos Zacharias

Outra coisa a extension=php_gd2.dll esta ativada na configuração o php-gtk mas mesmo assim não consigo obter exito, o que mais pode estar errado?

32

10/02/2009 12:05Davi FerreiraDavi Ferreira

Fala Marcos! Já verificou se existe essa DLL lá no diretório do php? E se o caminho das extensões está correto?

Não sei também como é no php-gtk, mas no php normal geralmente o php.ini fica dentro do diretório do Windows.

33

10/02/2009 13:07Marcos ZachariasMarcos Zacharias

Ja , no php-gtk por padrão fica na pasta php-gtk2/ext a dll esta lá, consegui até resolver isso. Agora só tem um detalhe que seria php mesmo q esta me deixando meio doido. Não to conseguindo definir um diretório no C: da maquina pra que seja usado no scandir($diretorio); ela não aceita por exemplo eu passar como parameto C:\galeria.

34

10/02/2009 14:34Marcos ZachariasMarcos Zacharias

outra coisa php-gtk nada mais é do que uma extensão do proprio php.
Seria como usar a Gimp Tool Kit dentro do php, oque me resulta em um software do lado cliente com janelas botões etc escrito em código php.
No demais é td a mesma coisa. O pepeino agora é como fazer a função scandir() do php pegar um diretório que esta na maquina local e redimensionar as fotos.
Tem como fazer isso com a função, nem q seja em php puro? Ai depois eu me viro pra fazer as adaptações.
Grato Deste ja por todas as ajudas que recebi
Marcos Zacharias

35

10/02/2009 14:55Davi FerreiraDavi Ferreira

Tenta:

$diretorio = 'c:\\galeria\\';

ou

$diretorio = 'c:/galeria/';

36

10/02/2009 15:18Marcos ZachariasMarcos Zacharias

Valeu Davi. Agora Funcinou redondo. Vou terminar o projeto e depois me sinto na obrigação de postar o código completo aqui.
Grato Marcos Zacharias.

37

12/02/2009 20:56Fábio DanteFábio Dante

Parabéns Davi,
A forma como você explica e demonstra, fica até mais fácil de aprender.
Seu blog já esta em favoritos.
Tenho um problema nesta página http://www.webix.com.br/fotos , estava funcionando perfeitamente até eu mudar de host, agora algumas funcionam e outras não.
O que pode ser?
Sei muito pouco de php, se puder me ajudar.
segue o código:
= 500){
$new_width = 500;
$new_height = ($height * $new_width) / $width;
}else {
$new_width = $width;
$new_height = $height;
}
} else {

}

$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

imagejpeg($image_p, null, 75);
imagedestroy($image_p);
?>

Desde já, muito obrigado.

38

13/02/2009 16:28FábioFábio

Esta dando o seguinte erro:
Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file in /home/webix/public_html/fotos/m2brimagem.class.php on line 185

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: 'imagens/famosos/jessica_alba16.jpg' is not a valid JPEG file in /home/webix/public_html/fotos/m2brimagem.class.php on line 185

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/webix/public_html/fotos/m2brimagem.class.php on line 331

Warning: Cannot modify header information – headers already sent by (output started at /home/webix/public_html/fotos/m2brimagem.class.php:185) in /home/webix/public_html/fotos/m2brimagem.class.php on line 593
ÿØÿàJFIFÿþ

neste link http://www.webix.com.br/fotos/red.php?arquivo=jessica_alba16.jpg&largura=200&altura=200
mas neste funciona
http://www.webix.com.br/fotos/red.php?arquivo=rss.jpg&largura=200&altura=200
Você sabe porque?

39

17/02/2009 01:58Davi FerreiraDavi Ferreira

Fala Fábio. Dei uma pesquisada no Google e parece ser um erro com php5 e alguns arquivos de imagem gerados no Mac.

Tenta colocar a seguinte linha no início do seu código, pro GD ignorar esse tipo de erro.

ini_set(’gd.jpeg_ignore_warning’, 1);

40

17/02/2009 19:05JulioJulio

Davi, eu postei a alguns dias sobre funcionar a biblioteca em php4, eu não consegui ainda, tem como você me mandar uma versão para php4? se não for incomodo é claro…

abração!

41

23/02/2009 18:10CarlosCarlos

Davi, essa classe me ajudou muito.
Valeu pela iniciativa de contribuir.
Grande abraço cara!

42

28/02/2009 03:46DanilloDanillo

Oi Davi, parabéns.. muito bom este script e muito bem comentado.. =)

mas estou com um problema.. não consigo rodá-lo aqui.. uso o EasyPHP e já habilitei a biblioteca GD e nada.. estou utilizando os mesmos códigos do exemplo.. e coloco uma imagem chamada img4.jpg na pasta.. e coloco o código..
mas nada acontece.. fica em braco e não dá erro nenhum.. oq será?? Sabe me ajudar??

ps: sou ini em php hehehe =)

abraçoss

43

28/02/2009 04:05DanilloDanillo

Oi Davi.. agora tá funcionando.. percebi q o arquivo com o nome da classe estava errado..
Mas aimgaem fica achatada.. gostaria de passar apenas um parâmetro.. que seria o da largura. Mas quando retiro o parâmetro do código não aparece nada.. Ex:
Pois eu queria q fosse feito um redimensionamento proporcional para não achatar a imagem.. como eu poderia fazer isso??

abraçosss

44

28/02/2009 04:16DanilloDanillo

Davi, descup ai postar diversos comentários assim viu.. hehehe eh pq nao tenho como deletar daki.. hehehe

conseguir resolver o problema.. e na verdade não ficava achatada a imagem não.. devido a função crop neh?!
mas tirei a funcão crop e os parâmetros de altura.. e deixei somente largura.. aí ele redimensiona proporcionalmente.. =)

vlw pelo script.. com certeza me ajudará bastante.. =)

abraçosss

45

03/03/2009 00:25AndryonAndryon

mto obrigado
resolveu todos os meus problemas
sou mto grato a vocÊ

46

10/03/2009 00:15Feliphe BuenoFeliphe Bueno

Valew ai cara, muito interessante o artigo e serviu como uma luva em minha aplicação, brigadao mesmo…
Abraço…

47

13/04/2009 17:08EduardoEduardo

Fala Davi,
primeiramente parabéns pelo post… sem sombra de dúvidas é de ótima qualidade..
to com o seguinte problema… quando eu coloca o destino como parâmetro no
$oImg->grava()
dá pau… não consigo salvar a imagem em uma pasta… ele "sobrescreve" o arquivo
queria fazer isso $oImg->grava($diretorio);

mas toda vez que coloco esse parametro dá

Notice: Undefined index: extension in C:\Arquivos de programas\EasyPHP 2.0b1\www\duzaca\classes\m2brimagem.class.php on line 557

48

13/04/2009 19:03Davi FerreiraDavi Ferreira

Fala Eduardo. Ali no grava, além do diretório, você tem que informar tambem o nome do arquivo.

Por exemplo:


$oImg->grava('C:\Arquivos de programas\EasyPHP 2.0b1\www\duzaca\teste.jpg');

A extensão não precisa ser a mesma do arquivo de origem.

49

15/04/2009 14:10Bruno ZanottiBruno Zanotti

Muito bom, porém aqui fica dando um erro(eu estou tentando usar o exemplo 1) :

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in m2brimagem.class.php on line 15

ele está dando erro antes de executar meu script.

Fora isso ta muito bom o material , Parabéns

50

16/04/2009 17:49LeandroLeandro

Muito obrigado pela dica
Nossa matou a pau aqui o que eu esta precisando.

100%

Valews, fica com Deus

51

27/04/2009 04:07Vagner Rogério BatistaVagner Rogério Batista

Olá Davi !
Muito boa sua classe, adicionei aqui a criação de diretórios quando não existentes na função grava("nome_do_dir_inexistente_ou_nao_dir").

52

01/05/2009 15:45Davi FerreiraDavi Ferreira

@Vagner: boa idéia! Se quiser mandar aí sua implementação fique a vontade!

53

01/05/2009 18:04Eduardo OliveiraEduardo Oliveira

Fala Davi,
Deu certo o esquema de eu salvar no diretorio passado pela variável, fiz até uma "graça" para o cliente, coloquei uma drop down para escolher a medida de redimensionamento (Grande, Média, Sem redimensionar).

Novamente parabéns pelo post.
Abraços.

54

03/05/2009 16:54CACA-[COBRA]CACA-[COBRA]

Só passando pra dar um Salve!!!

Essa classe já passou a ser parte de minhas ferramentas de trabalho ;)

Valew Davi

55

04/05/2009 03:49Breno MatosBreno Matos

parabens fera hehe.. salvou minha vida

56

08/05/2009 11:24AndersonAnderson

Olá.. gostaria de saber uma coisinha..

Digamos que eu possua um espaço com a largura de 100px.. `Preciso colocar uma figura redimensionada alí dentro, mas nao sei as dimensoes dessa figura.. Como configurar para que o arquivo.php só receba o nome da foto e a largura de forma a ele gerar um thumb com a largura especificada redimensionando proporcionalmente a altura??

57

08/05/2009 11:25AndersonAnderson

Esqueci de marcar que gostaria de receber a resposta por e-mail..

58

16/05/2009 06:35Samyr AlencarSamyr Alencar

Olá Davi!
Bacana esta sua biblioteca, também gostei do formato do post e do blog.
Uma pergunta continuou o desenvolvimento da lib?
Esta versão para download é a última?
Obrigado e um abraço.

59

20/05/2009 20:17Eduardo OliveiraEduardo Oliveira

Fala Davi,
Outra dúvida, faço o upload da imagem através do form, utilizo o move_uploaded_file, passa as medidas para o redimensiona(), salvo a imagem e armazeno no banco.

Agora como faço para gerar uma thumb dessa mesma imagem.
Por exemplo, eu vou cadastrar uma foto, faço o upload, além de "tratar" a foto para deixar num tamanho padrão, quero gerar um thumb da mesma.

60

21/05/2009 22:27FabianoFabiano

Davi, teria como encaminhar a versão PHP 4 ? ou disponibilizar aqui (porque são alguns os usuarios desta versão ainda)

61

27/05/2009 20:00BrunoBruno

Olá, parabéns pelo tutorial!

Estou apenas com um problema.
Estou trabalhando num site que usa um sistema de admin que envia noticias para o banco de dados e na página de noticias eu uso o seu código para redimensionar a imagem. Porem é mostrada apenas a imagem (assim como no seu exemplo) e não mostra o resto da página.

Como resolvo isso, é algo na classe que você criou que faz isso?

Obrigado

62

29/05/2009 15:03DiogoDiogo

Cara, parabéns expecional!
Bela contribuição para comunidade PHP.

63

10/06/2009 00:51JuniormanJuniorman

Cara, muito obrigado, é de gente como você que o mundo precisa, isso é autruismo

64

18/06/2009 16:41Diego TrindadeDiego Trindade

Davi tipo tem como pegar e jogar um GET pra exibir as imagens de outro site sabe?
ai pode redimensionar tbm … e fazer tudo isso que vc fez … ???

enviar comentário

(não será publicado, utilizado para avatar [Gravatar])

Tags disponíveis: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>