2010-09-13 5 views
6

Je m'attendrais à ce que $config['maintain_ratio'] = TRUE; fasse calculer la largeur si je ne spécifie qu'une hauteur. Je suppose que je dois fournir un grand nombre pour la hauteur pour le faire fonctionner?Codeigniter ne conservant pas les proportions

$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); 

Répondre

16

Correct, vous DEVEZ spécifier à la fois la hauteur et la largeur. Puisque l'option maintain_ratio est activée, le redimensionnement sera aussi proche de la taille cible que possible tout en préservant le format d'origine.

Cependant, si vous voulez vous assurer qu'il est toujours une certaine hauteur, définissez l'option de configuration master_dim à « hauteur », vous pouvez définir la largeur à quoi que ce soit et il fera toujours l'image de redimensionnement de la hauteur tout en conservant les aspects rapport avec la largeur. Idée similaire fonctionne pour maintenir la largeur.

+2

Si vous aviez vu votre réponse plus tôt, je n'aurais pas rempli mon code de resizer d'image avec des solutions de contournement mathématiques si j'avais lol – siaooo

7

@Mitchell McKenna, Thanx. Cela m'a beaucoup aidé.

Dans mon projet, l'image source pouvait être de n'importe quelle taille. et je voulais sa largeur de « 245 » px, avec un rapport maintenant, Donc, je viens de faire comme ça ....

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

Et cela a fonctionné. Thanx

0

La définition de l'autre dimension sur 1 effectuera le redimensionnement en fonction de la première valeur. Par exemple si vous voulez garder la largeur = 700px et calculer la hauteur en fonction de ce rapport;

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