如何使用CodeIgniter填充图像?

Sha*_*oon 2 image-manipulation codeigniter

我的用户正在上传任意大小XX x YY的图像.我想找到更大的尺寸并将图像缩小到250x250的正方形,并添加透明填充以弥补差异.CI的Image Lib有没有办法实现这个目标?

Jen*_*and 8

试试这个:

$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();
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅CodeIgniter API中的Image Manipulation Class

虽然说实话,我发现CI的图像处理库是不够的.它不是很灵活,对于重复或组合动作(如上所述)并不是很快,并且它使用了一种残暴的语法(对于某些类型的应用程序可能会派上用场,但我个人更喜欢像PHP这样的东西拇指):


事实上,我最近为PHP Thumb(下载)组装了一个简单的包装库,以便与CodeIgniter一起使用,它的工作非常棒.使用PHP Thumb库而不是CodeIgniter自己的,你可以像这样完成工作:

$this->load->library('phpthumb_lib');
$thumb = phpthumb_lib::create('/path/to/image/mypic.jpg');
$thumb->adaptiveResize(250, 250);
$thumb->save();
Run Code Online (Sandbox Code Playgroud)

有关PHP Thumb的GitHub页面的更多详细信息.

只有这不会用透明像素填充图像(我认为这是一个不好的做法),它只是调整大小并裁剪图像以适应整个250x250像素区域而不拉伸图像.

或者,您可以调整图像大小以适应 250x250像素的盒子(通过使用resize而不是adaptiveResize),然后将图像放在250x250px DIV容器中.我猜这可能是你想要的解决方案.