Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用CodeIgniter填充图像?_Codeigniter_Image Manipulation - Fatal编程技术网

如何使用CodeIgniter填充图像?

如何使用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

我的用户正在上传一个任意大小的图像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中的

虽然说实话,我觉得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();