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

You need to add a form callback property to your info array, which is:

The name of a function that will return a $form array providing a configuration form for this image effect.

For example:

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;
}

You'll then have access to $data['radius'] in the effect callback function, which will contain the values submitted through the admin form.

Make sure you clear the caches once you've made the code changes, otherwise the new hook data won't be picked up.

于 2012-08-24T15:26:24.760 に答える