0

我很高兴地设法编写了我自己的模块,该模块在 drupal 标准下拉列表中添加了一个高斯模糊滤镜效果选项:

function image_blur_image_effect_info() {

    return array(
        'image_blur' => array(
            'label' => t('Gaussian Blur'),
            'help' => t('Gaussian blur the image by a (currently) fixed amount.'),
            'effect callback' => 'image_blur_gaussian_blur'
        )
    ); 
}

这会将“高斯模糊”添加到下拉列表中,并且该功能甚至在应用于图像时也可以工作。

function image_blur_gaussian_blur(stdClass $image) {
    boxBlurImage($image->resource, 10, 2); 

    return true; 
}

但是,当我选择效果并单击应用时,我希望有可能让用户输入模糊的半径,就像使用 drupal 的“调整大小”、“缩放”而不是只是应用具有固定值的函数等等:

function image_blur_gaussian_blur(stdClass $image, **$radius**) {
    boxBlurImage($image->resource, **$radius**, 2); 

    return true; 
}

我无法从 image.inc / 中的其他函数代码中自己弄清楚:

4

1 回答 1

1

您需要在form callbackinfo 数组中添加一个属性,即:

将返回 $form 数组的函数的名称,该数组提供此图像效果的配置表单。

例如:

function image_blur_image_effect_info() {
  return array(
    'image_blur' => array(
      'label' => t('Gaussian Blur'),
      'help' => t('Gaussian blur the image by a (currently) fixed amount.'),
      'effect callback' => 'image_blur_gaussian_blur',
      'form callback' => 'image_blur_form'
    )
  ); 
}

function image_blur_form($data) {
  $form['radius'] = array(
    '#type' => 'textfield',
    '#title' => t('Radius'),
    '#required' => TRUE,
    '#default_value' => isset($data['radius']) ? $data['radius'] : '', 
    '#size' => 10,
    '#element_validate' => array('image_effect_integer_validate'), 
  );

  // Add any other elements here.

  return $form;
}

然后,您将可以访问$data['radius']效果回调函数,该函数将包含通过管理表单提交的值。

确保在更改代码后清除缓存,否则将不会拾取新的挂钩数据。

于 2012-08-24T15:26:24.760 回答