2017-01-01 4 views
1

Я загружаю некоторые изображения на свою веб-страницу и хотел бы, чтобы их миниатюры были квадратами, обрезанными из центра. Я использую Codeigniter и gd2.Crop thumbnail image to square в Codeigniter

Вот мой код до сих пор:

$config['image_library'] = 'gd2'; 
        $config['source_image'] = $this->userlibrary->picturesdir . $newfilename; 
$config['new_image'] = $this->userlibrary->thumbsdir; 
$config['create_thumb'] = TRUE; 
$config['maintain_ratio'] = TRUE; 
$config['width']= 150; 
$config['height']= 150; 

Изображения масштабируются красиво, но они сохраняют свои пропорции и только их ширину или высоту получает значение 150, они не обрезаны. Установка maintain_ratio по-прежнему не обрезает изображение, а искажает его.

Как я мог это сделать?

+0

Смотрите, если это то, что вам нужно: http://stackoverflow.com/questions/28002244/crop-resize-image-function-using-gd-library/28008400# 28008400 – Rasclatt

+0

Вы можете обрезать исходное изображение до квадрата, а затем изменить его размер. – ourmandave

ответ

0
//Set config for img library 
$config['image_library'] = 'ImageMagick'; 
$config['library_path'] = '/usr/bin/'; 
$config['source_image'] = $filePath . $fileOldName; 
$config['maintain_ratio'] = false; 

//Set cropping for y or x axis, depending on image orientation 
if ($fileData['image_width'] > $fileData['image_height']) { 
    $config['width'] = $fileData['image_height']; 
    $config['height'] = $fileData['image_height']; 
    $config['x_axis'] = (($fileData['image_width']/2) - ($config['width']/2)); 
} 
else { 
    $config['height'] = $fileData['image_width']; 
    $config['width'] = $fileData['image_width']; 
    $config['y_axis'] = (($fileData['image_height']/2) - ($config['height']/2)); 
} 

//Load image library and crop 
$this->load->library('image_lib', $config); 
$this->image_lib->initialize($config); 
if ($this->image_lib->crop()) { 
    $error = $this->image_lib->display_errors(); 
} 

//Clear image library settings so we can do some more image 
//manipulations if we have to 
$this->image_lib->clear(); 
unset($config); 

Источник: https://forum.codeigniter.com/thread-7286.html