Solicitação de Recursos

Gravatar de guieloi guieloi Tópico publicado em
14/04/2009, 07:11:37

Redimensionamento de imagens

Pessoal seria interessante uma classe que permita o redimensionamento de imagens!

Fica aí a dica

abraços e continuem assim

Gravatar de Rafael Marin Rafael Marin Resposta publicada em
14/04/2009, 09:34:40

Redimensionamento de imagens

Oi, já existe uma. Chama ImageComponent, e ela faz um bocado de coisas. Já vai vir como componente na instalação padrão da versão 0.2.

http://github.com/spaghettiphp/spaghettiphp/blob/2e22d78774ce7d525dd3652b4466469d9e439943/core/lib/components/image_component.php

Gravatar de guieloi guieloi Resposta publicada em
14/04/2009, 19:38:29

Redimensionamento de imagens

Olá erro meu … desconhecia o componente….
muito obrigado

Gravatar de Filipe Filipe Resposta publicada em
12/05/2009, 19:38:59

Redimensionamento de imagens

parece ser legal esse componente, alguém teria como dar uma palinha aí, um exemplo legal de como usar ele.

Valeu!

Gravatar de Klawdyo Klawdyo Resposta publicada em
13/05/2009, 10:16:37

Redimensionamento de imagens

Declare

public $components = array("Image");
na AppController se você quiser usar em todos os controllers

Agora no controller que você quer usar, chame a

$this->ImageComponent->resize("nomearquivo", $array_parametros)
//onde os parametros devem ser dessa forma
$params = array(
        "height" => 0,
        "width" => 0,
        "x" => 0,
        "y" => 0,
        "constrain" => false,
        "quality" => 80,
        "filename" => false
    );

-Se declarar filename no array, será criado um novo arquivo com o nome que voce criar, nesse momento é bom se ligar e colocar nesse estilo: “webroot/images/nome-arquivo.gif”, senao ele vai criar o arquivo em app/.
-contrain é pra manter a proporção, e
-se você declarar o X ou o Y, a imagem será cortada a partir das coordenadas x e y, ao invés de só redimensionada.

Obs.: $filename se refere à pasta app/, ou seja, se você chamar

$this->ImageComponent->resize("webroot/images/bg.gif")

ele vai procurar a imagem em app/webroot/images

p.s:O nome do component está errado na descrição.

Gravatar de Filipe Filipe Resposta publicada em
13/05/2009, 14:48:09

Redimensionamento de imagens

Agora sim, funcionou certinho, eu tava tendo dificuldade na hora de salvar, agora ficou bem explicado,

Eu estava afim de adicionar mais uma funcionalidade neste componente, iria ser só mais algumas linhas,

atualmente o componente salva a imagem para uma determinada pasta

return $fnOutput($output, $filename, $params[“quality”], PNG_ALL_FILTERS);

só que eu queria também uma opção de exibir a imagem na tela, só iria mudar a linha do return, iria fazer um if onde a outra opção seria

pensei nisso

ImageJpeg($output,’‘,$params[“quality”]);

só que eu não estou conseguindo aplicar isso, alguém poderia ajudar?

lembrando que na view onde a imagem iria ser exibida o layout teria que ser null e o header teria que ser assim:

Valew pela ajuda, quem puder ajudar nisso agradeço, iria ser legal se tivesse a aprovação dessas mudanças pelos criadores do Spaghetti*, para que seja disponibilizada na próxima versão.

Gravatar de Klawdyo Klawdyo Resposta publicada em
14/05/2009, 04:50:54

Redimensionamento de imagens

Se você fizer o jeito que está acima, após a chamada ao método resize, é só você fazer algo do tipo

$params = array(
        "height" => 0,
        "width" => 0,
        "x" => 0,
        "y" => 0,
        "constrain" => false,
        "quality" => 80,
        "filename" => "/webroot/images/thumbs/bg.gif"
    );
$this->redirect($params['filename']); 

Sacou? Você gera o thumbnail, e em seguida redireciona para ele.
Nesse caso você pode fazer alguns testes para achar a melhor forma de fazer isso, se é redirecionando para o arquivo mesmo (já que o spaghetti verifica se o caminho informado é um arquivo ou se é pra ser analisado como controller/view), ou se é redirecionando para uma view com o nome da imagem como parâmetro.

Gravatar de Klawdyo Klawdyo Resposta publicada em
14/05/2009, 05:03:33

Redimensionamento de imagens

Só pra complementar:
Aí em cima, entre o array e o redirect, precisa colocar o resize().

Gravatar de Filipe Filipe Resposta publicada em
14/05/2009, 14:39:13

Redimensionamento de imagens

você pega uma imagem que já existe e mostra na tela do tamanho que você quer, sem precisar salvar um thumbnail, fiz essas adapitações:

private $params = array(
				"height" => 0,
				"width" => 0,
				"x" => 0,
				"y" => 0,
				"constrain" => false,
				"quality" => 80,
				"filename" => false,
				"view" => false //acrescentar essa linha
		);

Substituir
return $fnOutput($output, $filename, $params["quality"], PNG_ALL_FILTERS);

por
if($params["view"]):
						header("Content-type: image/jpeg");
						return ImageJpeg($output,'',$params["quality"]);
				else:
						return $fnOutput($output, $filename, $params["quality"], PNG_ALL_FILTERS);
				endif;

ou seja, para ativar a opção de visualizar a imagem na tela sem gerar o thumbnail, é só deixar o parâmetro view = true,

no controlador eu deixei assim

	public function image() {
		$params = array(
			"height" => $_GET["h"],
			"width" => $_GET["w"],
			"constrain" => true,
			"quality" => 80,
			"view" => true
		);
		$this->ImageComponent->resize("webroot/images/" . $_GET["i"], $params);
		$this->layout = null;
	}

e na view image.phtm deixei em branco,
para chamar a imagem fiz assim
<?php echo $html->image("../events/image?w=114&h=114&i=events/" . $Photo["id"] . ".jpg", "Colégio Holus", array("border"=>"0")) ?>

analisando o código
../events/image -> porque a action que gera a imagem tá no controlador events,
w=114&h=114 ->os parâmetros para passa o tamanho, largura e altura.
i=events/” . $Photo[“id”] . “.jpg -> no parâmetro i eu passo o endereço da onde está a imagem original, neste caso a imagem está na pasta webroot/images/events/

é bem interessante, dessa maneira eu consigo usar a imagem do jeito que eu quiser, exibir em qualquer tamanho,

Gravatar de Dagmar Cirino Dagmar Cirino Resposta publicada em
14/05/2009, 21:20:05

Redimensionamento de imagens

Boa Felipe.
Vou testar aqui e tentar fazer umas adaptações.
Se der algo errado, ou se ficar loko* dimais*, eu posto aqui depois.

Gravatar de luizfd luizfd Resposta publicada em
17/11/2009, 22:17:00

Redimensionamento de imagens

Fala pessoal, blz?

pelo que eu entendi, esse método funciona para uma imagem especifica certo?
Como eu faço para que todas as imagens retornadas de uma consulta fiquem do mesmo tamanho?

Grato,
Luiz

Você deve estar logado para responder a um tópico ou adicionar um novo.
Efetue login ou Registre-se para participar das discussões.