用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5119|回复: 4
收起左侧

[HELP] 怎样在CI中生成缩略图且不变形?

[复制链接]
发表于 2010-5-24 10:54:59 | 显示全部楼层 |阅读模式
如题:怎样在CI中生成缩略图且不变形?

利用CI的生成缩略图功能,要么可以比例缩放,要么就是裁剪,请教高手,怎样写才能使生成的缩略图能比例缩小而又不变形呢?
我的代码如下,请高手指点:

function image_do($width,$height){
               
                $this->load->library('image_lib');
                $config['image_library'] = 'GD2';
                $config['source_image'] = 'uploads/ri.gif';
                $config['create_thumb'] = TRUE;
                $config['maintain_ratio'] = TRUE;//使图像保持原始的纵横比例
                $config['master_dim'] = 'width';
                $config['width'] = $width;
                $config['height'] = $height;
                $config['x_axis'] = '100';//将图片左边的100像素裁去
                $config['y_axis'] = '100';
               
                //$this->load->library('image_lib', $config);
                $this->image_lib->initialize($config);
                if(!$this->image_lib->resize()){
                        echo $this->image_lib->display_errors();
                }
                else{
                        echo "it successes !";
                }
                        }
发表于 2010-5-24 11:09:02 | 显示全部楼层
等比例缩小,你需要自己计算长宽。
这是个数学问题 -_-
 楼主| 发表于 2010-5-24 11:26:47 | 显示全部楼层
回复 2# Hex

我这里是要生成固定的缩略图呢,假如为100*90,等比例缩小$this->image_lib->resize()这个就可以做到的,问题是用户上传的图片是各种尺寸的,都要生成100*90的缩略图,且不能变形。
我个人想法是以缩略图的宽(这里是100)或高(90)为中心,会生成一个固定宽或高的缩略图,假如生成后是100*110,那么高度会多出20像素,然后再通过
    $this->image_lib->crop()来裁剪高度,使最终为100*90,但不知怎么去写,请指点一下?
发表于 2010-5-24 11:43:11 | 显示全部楼层
裁剪过的永远也不会是原图了。
那你都有步骤了,不就可以实现了吗?
发表于 2010-5-24 13:24:45 | 显示全部楼层
维持比例不变,进行缩小就可以了,
指定尺寸,CI会自动给图填充黑边(或者透明边,具体忘了)
$config['maintain_ratio'] = true;
$config['width'] = 100;
$config['height'] = 130;

本版积分规则