如何使用CodeIgniter填充图像?
我的用户正在上传一个任意大小的图像XX x YY。我想找到更大的尺寸,将图像缩小为250x250的正方形,并添加透明填充以弥补差异。有没有办法用CI的图像库来实现这一点?试试这个:如何使用CodeIgniter填充图像?,codeigniter,image-manipulation,Codeigniter,Image Manipulation,我的用户正在上传一个任意大小的图像XX x YY。我想找到更大的尺寸,将图像缩小为250x250的正方形,并添加透明填充以弥补差异。有没有办法用CI的图像库来实现这一点?试试这个: $config['image_library'] = 'gd2'; $config['source_image'] = '/path/to/image/mypic.jpg'; $config['maintain_ratio'] = TRUE; $config['width'] = 250; $config['heig
$config['image_library'] = 'gd2';
$config['source_image'] = '/path/to/image/mypic.jpg';
$config['maintain_ratio'] = TRUE;
$config['width'] = 250;
$config['height'] = 250;
$this->load->library('image_lib', $config);
$this->image_lib->resize();
$config['image_library'] = 'gd2';
$config['source_image'] = '/path/to/image/mypic.jpg';
$config['maintain_ratio'] = FALSE;
$config['width'] = 250;
$config['height'] = 250;
$this->image_lib->initialize($config);
$this->image_lib->crop();
有关详细信息,请参阅CodeIgniter API中的
虽然说实话,我觉得CI的图像处理库还不够。它不是很灵活,对于重复或组合操作(如上面的一个)也不是很快,而且它使用了一种糟糕的语法(对于某些类型的应用程序可能很方便,但我个人更喜欢这样):
事实上,我最近为phphthumb()准备了一个简单的包装器库,与CodeIgniter一起使用,它工作得非常好。使用PHP Thumb库而不是CodeIgniter自己的库,您可以像这样完成工作:
$this->load->library('phpthumb_lib');
$thumb = phpthumb_lib::create('/path/to/image/mypic.jpg');
$thumb->adaptiveResize(250, 250);
$thumb->save();
更多详细信息
<>这只不过是用透明像素来填充图像(我认为这是一个不好的实践),它只是调整图像大小,使图像适应整个250x250像素区域而不拉伸图像。
或者,您可以使其调整图像大小以适合250x250像素框(使用
调整大小
而不是自适应调整大小
),然后将图像放置在250x250px DIV容器中。我猜这可能是您想要的解决方案。我不裁剪图像,而是将其放置在div的背景中。这是我的代码
1) 在助手中放置此
function getSmallerDimension($img_path, $width, $height) {
list($wid, $hei, $type, $attr)= getimagesize($img_path);
$ratio = $wid / $hei;
if( $height < $width/$ratio ) {
return 'width';
}
else if( $width < $height * $ratio ) {
return 'height';
}
else {
return 'auto';
}
}
$config['image_library'] = 'gd2';
$config['source_image'] = 'source-path/source.jpg';
$config['create_thumb'] = true;
$config['thumb_marker'] = '-thumb';
$config['maintain_ratio'] = true;
$config['width'] = 250;
$config['height'] = 250;
$config['master_dim'] = getSmallerDimension('source-path/source.jpg', 250, 250);
$this->load->library('image_lib', $config);
$this->image_lib->resize();