Felipe Diesel

Desenvolvedor de software

Cortando e redimensionando imagens com o CodeIgniter

April 10, 2008 -

Eu sei que não tenho aparecido muito por aqui, mas o desenvolvimento da nova versão do SiGA está tomando todo tempo imaginável e tive que priorizar aquilo, pois o prazo já está estourando. Mas não é sobre isso que quero escrever.

Recentemente precisei de imagens quadradas num projeto e esse mesmo procedimento se repetiria várias vezes, então criei esta extensão da Biblioteca Image_lib que já vem com o CodeIgniter. Na verdade o código serve não só para imagens quadradas, já que o tamanho tem que ser definido literalmente.

Cole o código abaixo na pasta application/library com o nome MY_Image_lib.php:


class MY_Image_lib extends CI_Image_lib {
/**
 * Crop and resize a image
 *
 * @return bool
 */
    function crop_and_resize() {
        $width = $this->width;
        $height = $this->height; 
        $size = getimagesize($this->source_folder . $this->source_image);
        
        if ($size[0] > $size[1]) {
            $this->width =  $width / $height * $size[1]; 
            $this->height = $size[1];           
        } else {
            $this->width = $size[0];
            $this->height =  $height / $width * $size[0];            
        }
        $this->x_axis = ($size[0] - $this->width) / 2;
        $this->y_axis = ($size[1] - $this->height) / 2;
        
        if ( ! $this->crop() ) {
            return false;
        }
        
        $this->width = $width;
        $this->height = $height;
                
        if ( ! $this->resize()) {
            return false;
        }
        return true;
    }
}

Pra usar é muito fácil:


$config = array(
'source_image' => '/path/para/a/imagem.jpg',
'maintain_ratio' => false,
'width' => 48,
'height' => 48);

$this->load->library('image_lib', $config);
$this->image_lib->crop_and_resize();

E temos uma imagem como a mostrada abaixo: