我的用户正在上传任意尺寸 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['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 中的 Image Manipulation Class
尽管老实说,我觉得 CI 的图像处理库不够用。它不是很灵活,对于重复或组合操作(如上面的操作)不是很快,并且它使用了一种糟糕的语法(对于某些类型的应用程序可能会派上用场,但我个人更喜欢类似 PHP Thumb 的语法):
事实上,我最近为 PHP Thumb ( download ) 整理了一个简单的包装器库以与 CodeIgniter 一起使用,并且效果非常好。使用 PHP Thumb 库而不是 CodeIgniter 自己的库,您可以像这样完成工作:
$this->load->library('phpthumb_lib');
$thumb = phpthumb_lib::create('/path/to/image/mypic.jpg');
$thumb->adaptiveResize(250, 250);
$thumb->save();
有关 PHP Thumb's GitHub page 的更多详细信息。
只是这不会用透明像素填充图像(我认为这是一种不好的做法),它只是调整图像大小并裁剪图像以适应整个 250x250 像素区域而不拉伸(stretch)图像。
或者,您可以调整图像大小以适合 250x250 像素框(通过使用 resize
而不是 adaptiveResize
),并且然后将图像放入 250x250px DIV 容器中。我猜这可能是您想要的解决方案。
关于codeigniter - 如何使用 CodeIgniter 填充图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2394140/