ImageField использует тот же API, что и FileField.Следовательно, вы можете добавить специальный валидатор для вашего поля загрузки, который будет выполнять некоторые проверки изображения (например, вызывать скрипт ruby).
Я описал это некоторое время назад на Drupal.org, см .: http://drupal.org/node/546146
Однако, для вашего удобства, здесь код.
Во-первых, определите валидатор для формы загрузки:
function example_form_alter(&$form, $form_state, $form_id) {
if ($form_id != 'ID_OF_YOUR_FORM')
return;
$form['FIELDNAME'][0]['#upload_validators']['example_FUNCTIONNAME'] = array();
return $form;
}
Во-вторых, реализуйте функцию валидатора:
function example_FUNCTIONNAME($field) {
// variable for error messages
$errors = array();
// do some processing on the field
$filepath = $field->filepath;
...
// in case of error, add error message
$errors[] = t('Validation failed, because...');
return $errors;
}
Поместите этот код в пользовательский модуль, ноубедитесь, что ваш модуль вызывается после FileField и ImageField (отрегулируйте вес в системной таблице).
Обновление: Есть еще один способ подключиться к нему.Вы можете использовать hook_nodeapi, чтобы реагировать на операцию «presave».Это также позволяет вам вызывать скрипт для содержимого загруженного поля.