Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala ae, pessoal!!
Olha, vou tentar ser o mais claro possível... porque eu já tô de cabelo em pé com esse negócio.
Bom, o que eu quero fazer é o redimensionamento de uma imagem na hora em que ela for exibida, ou seja, é feito o upload normalmente de uma imagem de tamanho a x b. Em qualquer parte da aplicação onde ela for exibida, em algum tamanho menor do que o original, quero redimensioná-la nessa hora.
Certamente vocês já ouviram falar naquele famoso "thumb.php", que faz isso, e o procedimento é assim:
echo <img src='thum.php?width=200&height=100&filename=img/foto.jpg' />
// Já era, é exibida a imagem com o tamanho acertado na query string.
Como não achei nada parecido para o Cake, decidi adaptar um script como esse. A primeira coisa que me veio à cabeça foi transformá-lo num Helper, já que esse tipo de manipulação é feita na view.
Não deu certo. Tentei em Vendors... nada. Tentei deixar esse arquivo largado em todos os lugares possíveis... e nada também.
O lance desse script é que a saída do arquivo (todo) é uma imagem, ou seja, o thumb.php é uma imagem (o cabeçalho é setado para imagem). E eu não sei como fazer isso no Cake, porque tudo se trata sempre de uma classe que é instanciada para se usar seus métodos.
Só que não é esse o caso... putz, já tô meio perdido. Prefiro não me estender mais para não complicar as coisas.
Espero que tenham entendido até aqui. Valeu, pessoal!!!
Bom, o script é esse:
class ResizeImageHelper extends AppHelper {
var $filename = '';
var $new_width = '';
var $new_height = '';
var $img_params = array();
function out_put($_filename, $_width, $_height) {
$this->filename = 'img/'.$_filename;
$this->new_width = $_width;
$this->new_height = $_height;
$this->img_params = getimagesize($this->filename);
$width = $this->img_params[0];
$height = $this->img_params[1];
$type = $this->img_params['mime'];
switch($type) {
case 'image/jpeg':
$thumb = imagecreatetruecolor($this->new_width, $this->new_height);
$source = imagecreatefromjpeg($this->filename);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $this->new_width, $this->new_height, $width, $height);
header('Content-type: image/jpeg');
imagejpeg($thumb);
imagedestroy($thumb);
$this->filename = '';
$this->new_width = '';
$this->new_height = '';
$this->img_params = array();
break;
}
}
}
Por enquanto, só tá o de ".jpg".
Carregando comentários...