Во-первых, кажется, что ваши «малые» и «средние» измерения неверны в массиве измерений.
Что касается самой задачи, вы можете просто использовать функцию «обрезать» codeigniter длядать вам правильные размеры для миниатюры.Есть несколько методов, которые вы можете использовать:
1) Измените размер изображения, используя метод, который вы описываете, за исключением сохранения соотношения изображений и использования $config['master_dim'] = 'auto';
.Затем используйте функцию обрезки, чтобы обрезать изображение с измененным размером до желаемых размеров.Этот метод имеет дополнительный бонус компенсации за изображения, которые могут быть меньше, чем ваши эскизы!
2) Обрезать изображение с самого начала и игнорировать изменение размера в целом.
В любом случае, вы быдобавив что-то вроде этого:
$config['x_axis'] = 0;
$config['y_axis'] = 0;
$config['width'] = $dimensions[$i]['x'];
$config['height'] = $dimensions[$i]['y'];
$this->image_lib->initialize($config);
$this->image_lib->crop();
Третий метод, который позволит создать намного более аккуратные миниатюры, состоит в определении «наилучшего соответствия» для каждого изображения.Что-то вроде следующего:
$size = getimagesize($filename);
$width_ratio = floor($size[0] / $dimensions[$i]['x']);
$height_ratio = floor($size[1] / $dimensions[$i]['y']);
$min_ratio - min($width_ratio, $height_ratio);
$left = (($size[0] - ($dimensions[$i]['x'] * $min_ratio)) / 2);
$right = (($size[1] - ($dimensions[$i]['y'] * $min_ratio)) / 2);
$config['width'] = ($dimensions[$i]['x'] * $min_ratio);
$config['height'] = ($dimensions[$i]['y'] * $min_ratio);
$config['x_axis'] = $left;
$config['y_axis'] = $right;
$this->image_lib->initialize($config);
$this->image_lib->crop();
Затем измените размер этого нового изображения до нужного вам размера миниатюры.
Имейте в виду, я не проверял отношения меньше 0, я оставлючто вам.
С уважением, eyaka1