Upload e operações com imagens

Olá pessoal,

Estou procurando uma boa forma no Yii de trabalhar com imagens. A idéia é permitir o upload da imagem com um tamanho padrão, alterando a qualidade, tamanho e possivelmente salvando thumbs também.

Alguém teria alguma sugestão de plugin que seja útil e possa me ajudar nisso?

Grande abraço.

Dyego,

Uma extensão excelente para trabalhar com imagem e arquivo é a upload.class do verot.net

http://www.yiiframework.com/extension/upload/

Sample:

http://www.verot.net/php_class_upload_samples.htm

Opa, valeu newerton. Eu usei essa extensão para tratar as imagens e gostei muito.

Tava precisando também de outra coisa, uma extensão para o upload de imagens.

Tava usando a Muploadify, mas apareceram alguns bugs que não tenho conseguido resolver. Você indicaria alguma outra? Ou talvez, se conhecer a Muploadify, possa me ajudar também.

Abraço

Dyego,

Eu to usando o jQuery Multiple File Upload:

http://www.fyneworks.com/jquery/multiple-file-upload/

Que é um pacote do Yii que você pode chamar ele usando:

Yii::app()->clientScript->registerCoreScript(‘maskedinput’);

Ai você usa os exemplo dos sites para criar.

Mais te indico outro também, que é o que vou começar a usar:

http://blueimp.github.com/jQuery-File-Upload/

Opa Newerton, depois de algum sofrimento eu acabei voltando para o que já usava anteriormente, que é o do pacote do Yii mesmo, acho que vc quis dizer Yii::app()->clientScript->registerCoreScript(‘CMultiFileUpload’);

Acho que o maior problema dele é o fato de ter que selecionar uma imagem por vez. Até encontrei uma forma de selecionar varios arquivos com o mesmo input, mas teria que mexer no js inteiro do widget, então achei melhor não arriscar.

Você vai usar o xupload? Ele é uma extensão que usa esse plugin do Jquery ai.

Bom…eu sofri tentando usar ele…espero que você tenha mais sorte.

abraço

Dyego,

Errei no pacote hehehe

Então, até recomendei a extensão xupload para o Edson, mais vi que estava defasado e resolvi usar o próprio.

Mais o Jquery Upload File, fica fácil de usar, quando se tem o ID para usar como referência.

Por exemplo adicionar imagens de uma galeria você precisa do ID da galeria, se você usar no primeiro cadastro fica complicado, por que ele não cria nen os <input type="file"/> para resgatar na submissão do formulário ai sim ficaria bom.

No formulário de cadastro eu vou usar o multifileupload, ai quando o usuário for editar o formulário ai irei usar o jQuery Upload File.

Segue a imagem de como eu customizei o multifileupload.

Então, meu problema com o Jquery Opload File é bem esse mesmo.

Eu to precisando pra usar no formulário de cadastro. E pelo que vi, quando se seleciona as imagens, ele já upa automaticamente. Eu queria algo que upasse junto com o envio do formulário, pra poder salvar no banco com algumas informações que estarão nesse formulario.

Dessa forma, só encontrei o MultiFile Upload que tem esse inconveniente, de se poder selecionar apenas 1 arquivo por vez. Mas dá pra usar ele na primeira versão, e tentar apefeiçoar no futuro.

Uma coisa. Sobre a class Upload do verot, você usa ela em algum sistema já em atividade na web? Não apresentou nenhum problema de desempenho?

Ainda não finalizei tudo, mas pelo localhost, já tive a impressão que ela é meio pesadinha.

abraço

Dyego,

Sobre o Jquery File Upload, eu tentei fazer o mesmo que você, submeter o form e enviar os $_FILES mais ele não cria os <input type="file"/>, o máximo que conseguir foi na hora de clicar no botão Enviar todos, enviar os dados do formulário, só que tem os problema de validação, se houver erro na validação do formulário o botão Enviar todos fica inativo, não tem como enviar novamente.

Percebi que ele é bom somente para um Front-End, depois do cadastro do cliente ou usando no actionUpdate() na Administração.

Sobre o Upload do verot ela é lenta locamente mesmo, aqui demora mais do que deveria hehe

Mais online ele se comporta como qualquer upload de arquivo, não demora igual demoraria localmente.

Não sei o por que deste comportamento local.

Sobre os upload de arquivo, e complicado ficar usando dois metodos de envio, sendo que nenhum ou nen outro se adequa as nossas necessidades.

Eu iria utilizar esta estão tb do Jquery File Upload, mais vi que nao funciona bem com o IE, olhe na documentacao e vi que varias funçoes nao sao compativeis.

Então eu utilizo o uploadify nos meus projetos.

IE é uma porcaria!!!!!

concordo edson, mas infelizmente tem um mmonte de gente que usa neh…fazer oq.

Agora, Newerton, aproveitando que começamos a falar sobre o upload do verot. É impressão minha ou ele não funciona quando tento enviar imagens com o campo assim:




            <input id="fotos" type="file" value="" name="fotos[]" />

Os dados vão como array pra classe, mesmo que eu selecione apenas uma imagem pra enviar, e ai a classe tromba em vários erros. Como vc deve saber, o $_FILES fica assim quando envio com o [] no input:




array

  'fotos' => 

    array

      'name' => 

        array

          0 => string 'Koala.jpg' (length=9)

      'type' => 

        array

          0 => string 'image/jpeg' (length=10)

      'tmp_name' => 

        array

          0 => string 'C:\wamp\tmp\phpC021.tmp' (length=23)

      'error' => 

        array

          0 => int 0

      'size' => 

        array

          0 => int 780831



So que dentro da classe, um exemplo…ele tenta pegar $file[‘error’]. Nesse caso ele vai receber um array de 1 item apenas neh. Porém a classe espera já o proprio valor.


$this->file_src_error = $file['error'];

Isso tá na linha 2328 do arquivo da classe.

Ele deve ter sido feito pra apenas 1 arquivo mesmo, neh?

Dyego,

Não me lembro onde achei, acho que foi no grupo de discussão da class ou no próprio mini forum que eles tem.

Para trabalhar com array faz assim:




Yii::import('application.extensions.upload.Upload');


$imgs = array();

foreach ($imagem as $k => $l) {

	foreach ($l as $i => $v) {

		if (!array_key_exists($i, $imgs))

			$imgs[$i] = array();

		$imgs[$i][$k] = $v;

	}

}


foreach ($imgs as $img) {

	set_time_limit(0);

	$imagem = new Upload($img, Yii::app()->language);


	if ($imagem->uploaded) {

	...		

	}

}



Sobre o jQuery Upload File, as funções que não funciona no IE são o drag and drop e outros ações como DELETE, PUT e por ae vai, IE é complicado de trabalhar.

Eu mesmo não dou mais suporte pra IE6, IE7 e estou indo para o IE8 que algumas coisas de CSS não aceita, como eu faço a parte da Administração aconselho o cliente a usar Firefox ou Chrome.

Eu fiz algo parecido.

Enfim, consegui fazer ela funcionar.

Agora, mudando de rumo. Você utiliza alguma extensão pra criação de galeria?

Eu comecei a usar a jqprettyphoto do Antonio Ramirez…mas so funcionou em parte. Me sugere alguma outra?

Dyego,

Tem duas extensão que uso.

A que eu mais uso é a ShadowBox: http://www.yiiframework.com/extension/shadowbox/

A outra que usei por determinação do cliente é a FancyBox: http://www.yiiframework.com/extension/fancybox/