2010-09-13 3 views
6

Я ожидаю, что $config['maintain_ratio'] = TRUE; приведет к вычислению ширины, если я укажу только высоту. Думаю, я должен предоставить любое большое количество высоты, чтобы заставить его работать?Codeigniter не поддерживает соотношение сторон

$config['image_library'] = 'gd2'; 
    $config['source_image']  = $image_filepath; 
    $config['new_image']  = $thumbnail_filepath; 
    $config['maintain_ratio'] = TRUE; 
    $config['height']   = $this->thumbnail_height; 

    $this->image_lib->initialize($config); 

ответ

16

Правильно, вы ДОЛЖНЫ указать как высоту, так и ширину. Поскольку параметр maintain_ratio включен, размер размера будет максимально приближенным к размеру цели при сохранении исходного соотношения сторон.

Однако, если вы хотите, чтобы убедиться, что это всегда определенная высота, установите параметр master_dim конфигурации на «высоту», то вы можете установить ширину ни к чему, и он всегда будет делать изменения размера изображения, высоту, сохраняя при этом аспекте отношение с шириной. Подобная идея работает для поддержания ширины.

+2

Должен был увидеть ваш ответ раньше, я бы не заполнил свой код изменения изображения с помощью математических обходных решений, если бы у меня было LOL – siaooo

7

@Mitchell McKenna, Thanx. Это мне очень помогло.

В моем проекте исходное изображение могло быть любого размера. и я хотел его ширину «245» рх, с сохранением соотношения, Так, я только что сделал, как это ....

$config['width'] = '245'; 
$config['height'] = '1'; 
$config['maintain_ratio'] = TRUE; 
$config['master_dim'] = 'width'; 

И это сработало. Thanx

0

Установка другого измерения в 1 приведет к изменению размера на основе первого значения. Например, если вы хотите сохранить width = 700px и рассчитать высоту, основанную на этом соотношении;

$config['width'] = 700; 
$config['height'] = 1; // force resizing based on width