Oi Mike,
Estou desenvolvendo uma aplicação com o recurso semelhante que você
está procurando.
Por falta de tempo para este projeto ainda não testei a classe abaixo.
Se conseguir fazê-la funcionar e/ou aprimorá-la passe para a gente a solução.
Abs
Edinho
application/libraries/MY_Upload.php
<?
class MY_Upload extends Upload{
/**
* Redimensiona se for maior e com a mesma proporção
*/
function redimensiona()
{
$config['image_library'] = 'GD';
$config['source_image'] = $this->file_temp;
$config['create_thumb'] = false;
$config['maintain_ratio'] = TRUE;
$config['width'] = 340;
$config['height'] = 255;
$this->load->library('image_lib', $config);
return $this->image_lib->resize();
}
function is_allowed_dimensions()
{
if ( ! $this->is_image() OR $this->max_width == 0 OR $this->max_height == 0 )
{
return TRUE;
}
if (function_exists('getimagesize'))
{
$D = @getimagesize($this->file_temp);
$proporcao_padrao = $this->max_width/$this->max_height;
$proporcao_upload = $D['0']/$D['1'];
if ($D['0'] > $this->max_width AND $proporcao_padrao !=$proporcao_upload)
{
return FALSE;
}
if ($D['1'] > $this->max_height AND $proporcao_padrao !=$proporcao_upload)
{
return FALSE;
}
if($proporcao_padrao == $proporcao_upload){
return $this->redimensiona();
}
return TRUE;
}
return TRUE;
}
}
?>
2008/4/10 Mike Maciel <[EMAIL PROTECTED]>:
> O problema não está em como criar o thumb, mas sim redimensionar a
> imagem original.
> O gerador de thumbs do rapyd até que seria uma boa solução, porém eu
> ficaria com duas imagens no servidor: uma enorme e outra no formato que
> eu preciso, sendo que a primeira seria desnecessária.
>
> Vou dar uma olhada nesse lance que o Edinho comentou. Pode ser que
> consigamos algo... uma extensão, talvez.
>
> []'s
>
> Reginaldo Sousa escreveu:
> > O Rapyd já cria o thumb,
> >
> > <?php
> >
> > $edit->img = new uploadField("Foto destaque", "foto_destaque");
> > $edit->img->upload_path = UPLOAD_PATH . "paginas/";
> > $edit->img->allowed_types = "jpg|gif|png";
> > $edit->img->thumb = array (340, 255); // tamanho do thumb
> > $edit->img->max_width = 1024;
> > $edit->img->max_height = 768;
> > ?>
> >
> > Não vivo mais sem ele :P
> >
> > 2008/4/10 Edinho Almeida <[EMAIL PROTECTED]
> > <mailto:[EMAIL PROTECTED]>>:
> >
> > Oi Mike,
> > Parece que na hora 'H' o rapyd utiliza a library upload do CI para
> > afetivar o upload.
> > A solucão para você então seria extender a library Upload
> >
> > Sem mexer no core do ci e nem do radyd
> >
> > Abs
> > Edinho
> >
> > 2008/4/10 Mike Maciel <[EMAIL PROTECTED]
> > <mailto:[EMAIL PROTECTED]>>:
> > > Eu concordo com o Felipe... e a opinião dele reflete bem o que
> > eu estou
> > > passando.
> > >
> > > Agora estou a fuçar os fontes do rapyd pra ver se descubro
> > alguma coisa.
> > > O rapyd é uma ótima pedida para quem precisa se rápido na
> > simplicidade.
> > > Mas se vc precisar fazer algo mais complexo, vc corre o risco
> > de passar
> > > sérios apuros como eu.
> > >
> > > []'s
> > >
> > >
> > > Felipe Diesel escreveu:
> > >
> > >
> > > > Eu testei o rapyd, mas não me adaptei, justamente por ele
> > facilitar as
> > > > coisas de mais. A coisa é muito automática e não se tem o
> > controle
> > > > sobre o código.
> > > >
> > > > Claro que se está sendo feito um site com form de contato ou
> > mesmo um
> > > > pequeno sistema que não precisa de muito javascript e ajax
> > ele é uma
> > > > mão na roda, mas para mim ele não serviu!
> > > >
> > > > Abraços
> > > >
> > > > 2008/4/10 Mike Maciel <[EMAIL PROTECTED]
> > <mailto:[EMAIL PROTECTED]>>:
> > > >
> > > >> Marco,
> > > >>
> > > >> Realmente o Rapyd facilita mto a nossa vida. No sie oficial
> > > >> (www.rapyd.com <http://www.rapyd.com>) vc encontra mtas
> > informações. A documentação é boa, pena
> > > >> que o fórum oficial seja (muito) parado.
> > > >>
> > > >> Atualmente, eles estão lançando um novo Rapyd (o Rapyd SA)
> > que é
> > > >> compatível com outros frameworks além do CI, e pode tb ser
> > utilizado
> > > >> como um si
> > > >> Eu te aconselho usar uma versão do rapyd que já vem
> > integrada ao CI.
> > > >> Pena que a versão utilizada ainda seja a 1.5.4.
> > <http://1.5.4.> Mas se vc usa a versão
> > > >> mais atual, pode baixar e instalar o SA. Os dois funcionam
> > da mesma
> > > >> maneira, a diferença é que o SA pode se integrar mais
> > facilmente com
> > > >> outros frameworks, e até msm ser utilizada como um simples
> > script.
> > > >>
> > > >> Em http://test.rapyd.com/sa/demo/ vc pode encontrar vários
> > exemplos
> > > >> funcionais do rapyd.
> > > >>
> > > >> Como vc diz: Muia sorte pra nós!
> > > >>
> > > >> []'s
> > > >>
> > > >>
> > > >> Marco Telles escreveu:
> > > >>
> > > >>
> > > >>
> > > >>> A recíproca é verdadeira, Mike.
> > > >>>
> > > >> > Como não estava entendendo a complexidade da situação, já
> > que se fez o
> > > >> > upload, ele vai estar em algum canto. Se ele está em
> > algum canto, basta
> > > >> > tratar/manipular ele. Tratado e manipulado, é só
> > introduzir o dito cujo
> > > >> > no ponto g ou x.. Bem mais isso é outra história.. :)
> > > >> >
> > > >> > Agora voltando aos frangos e patos, fiz uma leitura
> > (olhada) dinâmica (e
> > > >> > como) no tal rapidão, e me interessou o lance do "Rapyd
> > Language Class".
> > > >> > Tenho um site em construção que vai precisar trabalhar
> > com br/en tanto
> > > >> > no layout como no conteúdo, fato que já até postei e
> > recebi várias dicas
> > > >> > aqui. Vc já usou ? Sabe dizer algo ?
> > > >> >
> > > >> > Abs
> > > >> >
> > > >> >
> > > >> >
> > > >> > Mike Maciel escreveu:
> > > >> >
> > > >> >> Cara! Vc mirou no pato e acertou o frango! :-P
> > > >> >>
> > > >> >> Em outras palavras, vc tentou me ajudar com um problema
> > mas acabou me
> > > >> >> ajudando a matar um outro problema! rsrs
> > > >> >>
> > > >> >> Ainda tenho aquela dificuldade do outro email, mas esse
> > lance do
> > > >> >> maintain_ratio me deu um verdadeiro farol pra resolver
> > outro problema aqui.
> > > >> >>
> > > >> >> Vlw!
> > > >> >>
> > > >> >>
> > > >> >>
> > > >> >> Marco Telles escreveu:
> > > >> >>
> > > >> >>
> > > >> >>> Esqueci um detalhe. Se precisar da imagem no tamanho
> > exato de 340 x 255
> > > >> >>> e se a imagem original tiver vários tamanhos, então é
> > melhor colocar
> > > >> >>> $config['maintain_ratio'] = FALSE; conforme o guia:
> > > >> >>>
> > > >> >>>
> > > >> >>>
> > > >> >>>
> > > >> >>>> Since the maintain_ratio option is enabled, the thumb
> > will be as close
> > > >> >>>> to the target width and height as possible while
> > preserving the
> > > >> >>>> original aspect ratio
> > > >> >>>>
> > > >> >>>>
> > > >> >>>>
> > > >> >>> Marco Telles escreveu:
> > > >> >>>
> > > >> >>>
> > > >> >>>
> > > >> >>>> Mike essa eu não capitchei não :)
> > > >> >>>>
> > > >> >>>> Nunca usei rapyd e nem sei como funciona e para que
> > serve, então nesse
> > > >> >>>> ponto não tenho como ajudar muito, porém, levando em
> > consideração seu
> > > >> >>>> relato:
> > > >> >>>>
> > > >> >>>> 1.
> > > >> >>>>
> > > >> >>>>
> > > >> >>>>
> > > >> >>>>
> > > >> >>>>> o principal deles é as dimensões da imagem
> > > >> >>>>> que devem ser exatamente 340x255.
> > > >> >>>>> Eu precisava executar uma ação após o upload que
> > verificasse se a imagem
> > > >> >>>>> enviada atende a esses padrões.
> > > >> >>>>>
> > > >> >>>>>
> > > >> >>>>>
> > > >> >>>>>
> > > >> >>>> Isso resolve com php, nem precisa CI => list($w, $h) =
> > getimagesize(
> > > >> >>>> $imagemEnviada );
> > > >> >>>>
> > > >> >>>> 2.
> > > >> >>>>
> > > >> >>>>
> > > >> >>>>
> > > >> >>>>
> > > >> >>>>> A dificuldade começa agora: Caso a
> > > >> >>>>> imagem enviada seja em outra proporção (640x480, por
> > exemplo), ela seria
> > > >> >>>>> redimensionada para 340x255.
> > > >> >>>>>
> > > >> >>>>>
> > > >> >>>>>
> > > >> >>>>>
> > > >> >>>> Nesse caso o CI é mais prático =>
> > > >> >>>> $this->load->library('image_lib');
> > > >> >>>> //Configura o thumb
> > > >> >>>> $config['image_library'] = 'GD2';
> > > >> >>>> $config['source_image'] = $imagemEnviada;
> > > >> >>>> $config['create_thumb'] = TRUE;
> > > >> >>>> $config['maintain_ratio'] = TRUE;
> > > >> >>>> $config['width'] = 340;
> > > >> >>>> $config['height'] = 255;
> > > >> >>>> $this->image_lib->initialize($config);
> > > >> >>>> $this->image_lib->resize();
> > > >> >>>>
> > > >> >>>> Espero ter ajudado, senão delete-me :)
> > > >> >>>>
> > > >> >>>> Valeu e abs.
> > > >> >>>>
> > > >> >>>> Muita sorte para nós!
> > > >> >>>>
> > > >> >>>> Marco Telles
> > > >> >>>>
> > > >> >>>>
> > > >> >>>>
> > > >> >>>>
> > > >> >>>> Mike Maciel escreveu:
> > > >> >>>>
> > > >> >>>>
> > > >> >>>>
> > > >> >>>>
> > > >> >>>>> Já verifiquei... acho que não consegui passar meu
> > problema com claridade.
> > > >> >>>>> Com relação à manipulação da imagem, está td beleza.
> > O meu problema é
> > > >> >>>>> como executar a manipulação em um uploadField. Este
> > seria um evento que
> > > >> >>>>> deve ocorrer somente após o upload, e naquele
> > determinado arquivo...
> > > >> >>>>> algo como "onUploadSucess", ou "afterUpload", sei lá...
> > > >> >>>>>
> > > >> >>>>> Capitche?
> > > >> >>>>>
> > > >> >>>>>
> > > >> >>>>> Marco Telles escreveu:
> > > >> >>>>>
> > > >> >>>>>
> > > >> >>>>>
> > > >> >>>>>
> > > >> >>>>>
> > > >> >>>>>> Dá uma olhada no guia do CI, especificamente a
> > classe de imagens que vc
> > > >> >>>>>> vai ter uma luz :)
> > > >> >>>>>>
> > > >> >>>>>> Muita sorte para nós!
> > > >> >>>>>>
> > > >> >>>>>> Marco Telles
> > > >> >>>>>>
> > > >> >>>>>> #############
> > > >> >>>>>> # Pier de Ipanema ( http://www.pierdeipanema.com.br/ )
> > > >> >>>>>> # Pier de Ipanema no Orkut (
> > http://www.orkut.com/Community.aspx?cmm=2923344 )
> > > >> >>>>>> # CodeIgniter PHP framework (
> > http://www.codeigniter.com.br/ )
> > > >> >>>>>> # Ubuntu The power of free software (
> > http://www.ubuntu-br.org/ )
> > > >> >>>>>> # Python Programming Language (
> > http://www.pythonbrasil.com.br/ )
> > > >> >>>>>>
> > > >> >>>>>>
> > > >> >>>>>>
> > > >> >>>>>> Mike Maciel escreveu:
> > > >> >>>>>>
> > > >> >>>>>>
> > > >> >>>>>>
> > > >> >>>>>>
> > > >> >>>>>>
> > > >> >>>>>>
> > > >> >>>>>>> Salve, salve!
> > > >> >>>>>>>
> > > >> >>>>>>> Estou utilizando CodeIgniter+Rapyd (combinação
> > explosiva! ;-) ) em uma
> > > >> >>>>>>> aplicação que faz upload de arquivos jpeg. Porém
> > este arquivo precisa
> > > >> >>>>>>> obdecer a alguns critérios, e o principal deles é
> > as dimensões da imagem
> > > >> >>>>>>> que devem ser exatamente 340x255.
> > > >> >>>>>>> Eu precisava executar uma ação após o upload que
> > verificasse se a imagem
> > > >> >>>>>>> enviada atende a esses padrões. A dificuldade
> > começa agora: Caso a
> > > >> >>>>>>> imagem enviada seja em outra proporção (640x480,
> > por exemplo), ela seria
> > > >> >>>>>>> redimensionada para 340x255.
> > > >> >>>>>>>
> > > >> >>>>>>> Alguém já encarou situação semelhante ou sabe o
> > caminho das pedras?
> > > >> >>>>>>>
> > > >> >>>>>>> Abraços a todos!
> > > >> >>>>>>>
> > > >> >>>>>>> Mike
> > > >> >>>>>>>
> > > >> >>>>>>> _______________________________________________
> > > >> >>>>>>> Lista mailing list
> > > >> >>>>>>> [email protected]
> > <mailto:[email protected]>
> > > >> >>>>>>>
> > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > >> >>>>>>>
> > > >> >>>>>>>
> > > >> >>>>>>>
> > > >> >>>>>>>
> > > >> >>>>>>>
> > > >> >>>>>>>
> > > >> >>>>>>>
> > > >> >>>>>>>
> > > >> >>>>>> _______________________________________________
> > > >> >>>>>> Lista mailing list
> > > >> >>>>>> [email protected]
> > <mailto:[email protected]>
> > > >> >>>>>>
> > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > >> >>>>>>
> > > >> >>>>>> __________ Information from ESET Smart Security,
> > version of virus signature database 2835 (20080130) __________
> > > >> >>>>>>
> > > >> >>>>>> The message was checked by ESET Smart Security.
> > > >> >>>>>>
> > > >> >>>>>> http://www.eset.com
> > > >> >>>>>>
> > > >> >>>>>>
> > > >> >>>>>>
> > > >> >>>>>>
> > > >> >>>>>>
> > > >> >>>>>>
> > > >> >>>>>>
> > > >> >>>>>>
> > > >> >>>>>>
> > > >> >>>>> _______________________________________________
> > > >> >>>>> Lista mailing list
> > > >> >>>>> [email protected]
> > <mailto:[email protected]>
> > > >> >>>>>
> > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > >> >>>>>
> > > >> >>>>>
> > > >> >>>>>
> > > >> >>>>>
> > > >> >>>>>
> > > >> >>>>>
> > > >> >>>> _______________________________________________
> > > >> >>>> Lista mailing list
> > > >> >>>> [email protected] <mailto:[email protected]>
> > > >> >>>>
> > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > >> >>>>
> > > >> >>>>
> > > >> >>>>
> > > >> >>>>
> > > >> >>>>
> > > >> >>> _______________________________________________
> > > >> >>> Lista mailing list
> > > >> >>> [email protected] <mailto:[email protected]>
> > > >> >>>
> > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > >> >>>
> > > >> >>> __________ Information from ESET Smart Security,
> > version of virus signature database 2835 (20080130) __________
> > > >> >>>
> > > >> >>> The message was checked by ESET Smart Security.
> > > >> >>>
> > > >> >>> http://www.eset.com
> > > >> >>>
> > > >> >>>
> > > >> >>>
> > > >> >>>
> > > >> >>>
> > > >> >>>
> > > >> >> _______________________________________________
> > > >> >> Lista mailing list
> > > >> >> [email protected] <mailto:[email protected]>
> > > >> >>
> > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > >> >>
> > > >> >>
> > > >> >>
> > > >> >
> > > >> > _______________________________________________
> > > >> > Lista mailing list
> > > >> > [email protected] <mailto:[email protected]>
> > > >> >
> > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > >> >
> > > >> > __________ Information from ESET Smart Security, version
> > of virus signature database 2835 (20080130) __________
> > > >> >
> > > >> > The message was checked by ESET Smart Security.
> > > >> >
> > > >> > http://www.eset.com
> > > >> >
> > > >> >
> > > >> >
> > > >> >
> > > >>
> > > >>
> > > >> _______________________________________________
> > > >> Lista mailing list
> > > >> [email protected] <mailto:[email protected]>
> > > >>
> > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > >>
> > > >>
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > > _______________________________________________
> > > Lista mailing list
> > > [email protected] <mailto:[email protected]>
> > > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > >
> >
> >
> >
> > --
> > Abs
> > Edinho Almeida
> > 11 3711-7074
> > 11 3564-8906
> >
> > _______________________________________________
> > Lista mailing list
> > [email protected] <mailto:[email protected]>
> > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> >
> >
> >
> >
> > --
> > Reginaldo Sousa | Desenvolvedor web
> > [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>,
> > [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
> > (21) 8728-1850
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Lista mailing list
> > [email protected]
> > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> >
> >
> >
> > __________ Information from ESET Smart Security, version of virus
> signature database 2835 (20080130) __________
> >
> > The message was checked by ESET Smart Security.
> >
> > http://www.eset.com
> >
>
>
> _______________________________________________
> Lista mailing list
> [email protected]
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
--
Abs
Edinho Almeida
11 3711-7074
11 3564-8906
_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br