обрезка изображения с помощью codeigniter

Я работаю с jcrop и codeigniter, чтобы пользователи могли обрезать изображения, которые они загружают, я хочу, чтобы изображение обрезалось до размера 90x60, но что бы я ни пытался, ничего не работает, мой текущий код выглядит так,

КОНТРОЛЛЕР

function save_crop() {
        $this->load->library('image_lib');

        $config['image_library'] = 'gd2';
        //$config['library_path'] = '/usr/X11R6/bin/';
        $config['source_image'] = './media/images/uploads/company_uploads/' . $this->input->post('image_name');
        //$config['new_image'] = './media/images/uploads/company_uploads/cropped' . $this->input->post('image_name').'_'.time();
        //die($config['source_image']);
        $config['x_axis'] = $this->input->post('x');
        $config['y_axis'] = $this->input->post('y');
        $config['width'] = $this->input->post('w');
        $config['height'] = $this->input->post('h');
        $config['maintain_ration'] = TRUE;
        $config['dynamic_output'] = TRUE;
        $this->image_lib->initialize($config);

        if(!$this->image_lib->crop()) {
            echo $this->image_lib->display_errors();
        } else {
            echo "Success";
        }
    }

JAVASCRIPT

$('#jcrop_target').Jcrop({
        onChange: showPreview,
        onSelect: showCoords,
        aspectRatio: 1,
        addClass: 'custom',
        maxSize: [90,60]
    });

    function showPreview(coords)
    {
        var rx = 100 / coords.w;
        var ry = 100 / coords.h;

        $('#preview').css({
            width: Math.round(rx * 500) + 'px',
            height: Math.round(ry * 370) + 'px',
            marginLeft: '-' + Math.round(rx * coords.x) + 'px',
            marginTop: '-' + Math.round(ry * coords.y) + 'px'
        });
    };

    function showCoords(c)
    {
        $('#x').val(c.x);
        $('#y').val(c.y);
        $('#x2').val(c.x2);
        $('#y2').val(c.y2);
        $('#w').val(c.w);
        $('#h').val(c.h);
    };

HTML

<?php if(isset($upload_data)) :?>
            <?php if($upload_data['image_width'] > 90 || $upload_data['image_height'] > 60) : ?>
            <p>Your image is a little large</p>
            <form action="<?php echo base_url();?>employer/save_crop" method="post">
            <div id="uploaded_image">
                <img src="<?php echo base_url();?>media/images/uploads/company_uploads/<?php echo $upload_data['file_name'];?>" id="jcrop_target"/>
            </div>
                <div id="uploaded_preview">
                <img src="<?php echo base_url();?>media/images/uploads/company_uploads/<?php echo $upload_data['file_name'];?>" id="preview"/>
                </div>
                <input type="hidden" name="x" id="x" />
                <input type="hidden" name="y" id="y" />
                <input type="hidden" name="x2" id="x2" />
                <input type="hidden" name="y2" id="y2" />
                <input type="text" name="w" id="w" />
                <input type="text" name="h" id="h" />
                <input type="hidden" name="image_name" value="<?php echo $upload_data['file_name'];?>"/>
                <input type="submit" name="crop_image" value="Crop" />
            </form>
            <?php endif; ?>
        <?php endif; ?>

person sea_1987    schedule 23.08.2010    source источник


Ответы (2)


$config['maintain_ratio'] = TRUE;

Вы должны поставить maintain_ratio вместо maintain_ration.

person pinarella    schedule 25.09.2012

Если бы вы разместили сообщения об ошибках, которые выдавал Codeigniter, это позволило бы нам быть намного более полезными.

Используете ли вы «помощник формы» Codeigniter для проверки? Если «maxSize» установлен правильно в jCrop, у вас не должно возникнуть никаких проблем...

Ошибки пожалуйста :)

person Pierce    schedule 04.09.2010