Изменение размера загруженных изображений elFinder

Я хочу изменить размер изображения во время загрузки, вместо 200x100. Тем не менее, я не могу найти какие-либо связанные файлы, чтобы сделать эту настройку.

После некоторых поисков я видел, как несколько человек говорили другим заглянуть в файл connector.php. В этом файле мне нужно передать следующее:

$opts = array(
            'bind' => array(
                'upload resize' => array($this, 'myResize')
            ),
            'roots' => array(
                array(...)
            )
        );

/**
     * Upload/resize callback catcher, resizes image to 320x240px/240x320px respectively, keeps ratio
     *
     * @param  string   $cmd       command name
     * @param  array    $result    command result
     * @param  array    $args      command arguments from client
     * @param  object   $elfinder  elFinder instance
     * @return true     Forces elFinder to sync all events
     * */
    public function myResize($cmd, $result, $args, $elfinder) {
        $files = $result['added'];
        foreach ($files as $file) {
            $arg = array(
                'target' => $file['hash'],
                'width' => 320,
                'height' => 320,
                'x' => 0,
                'y' => 0,
                'mode' => 'propresize',
                'degree' => 0
            );
            $elfinder->exec('resize', $arg);
        }

        return true;
    }

Мой большой вопрос:

Где я могу разместить эту функцию? Я использую (FM)ElfinderBundle для Symfony2.

1 ответ

Есть два способа решения этого вопроса.

  1. Поместите вашу функцию (myResize) в connector.php:

    публичная функция myResze($cmd, $result, $args, $elfinder)
    {
      // другой код
    }

затем установите 'bind' в:

'bind' => array(
    'upload resize' => 'myResize');
  1. определите свой класс в connector.php и получите экземпляр для использования в 'bind'. пример:
    class className
    {
       // другой код

       публичная функция myResize($cmd, $result, $args, $elfinder)
       {
         // другой код
       }
    }

после создания объекта из этого класса:

$obj = new className();

затем установите "привязать" к этому:

'bind' => array(
    'upload resize' => array($obj, 'myResize'));

этот пример полезен для вас: https://github.com/Studio-42/elFinder/wiki/Logging

Другие вопросы по тегам