Codeigniterがスマートカット画像を実現する方法

1329 ワード

1024*768サイズの写真を240*240サイズに切り取り、歪んでいないように裁断し、できるだけ写真のテーマの意味を残します。
私が使用した方法:
1.まず画像などの割合を裁断できる大きさに縮小します。
幅の広い画像であれば、高さなどの比率で高さ=240 pxまで拡大縮小し、幅より狭い画像(幅より高い高さ)は幅などの比率で拡大縮小します。
2.長さと幅で中央に切り取ります。
縮小した画像の中間部分を保持します。

$this->load->library('image_lib');           
    list($width, $height) = getimagesize("upload/123.jpg");
    $config['image_library'] = 'gd2';
    $config['source_image'] = 'upload/123.jpg';
    $config['maintain_ratio'] = TRUE;
    if($width >= $height)
    {
        $config['master_dim'] = 'height';
    }else{
        $config['master_dim'] = 'width';
    }
    $config['width'] = 240;
    $config['height'] = 240;
    $this->image_lib->initialize($config);
    $this->image_lib->resize();

    $config['maintain_ratio'] = FALSE;
    if($width >= $height)
    {
        $config['x_axis'] = floor(($width * 240 / $height - 240)/2);
    }else{
        $config['y_axis'] = floor(($height * 240 / $width - 240)/2);
    }
    $this->image_lib->initialize($config);
    $this->image_lib->crop();