Это можно сделать через обработчик событий.
В файле /bitrix/php_interface/init.php добавляете два обработчика:
AddEventHandler("iblock", "OnAfterIBlockElementAdd","OnAfterIBlockElementUpdateHandler");
AddEventHandler("iblock", "OnAfterIBlockElementUpdate","OnAfterIBlockElementUpdateHandler");
после чего создаете функцию, где эта обработка, собственно, и происходит:
function OnAfterIBlockElementUpdateHandler(&$arFields){
CModule::IncludeModule("iblock");
# массив элемента доступен в $arFields, детальная картинка, соответственно,
# в $_FILES['DETAIL_PICTURE']
# меняем картинку так, как нам нужно с помощью imageresize()
# после чего получившийся результат пишем для элемента с ID = $arFields['ID']
}
Ну, это вариант решения из разряда "вставьте код бла-бла-бла".
На самом деле с Битриксом засада может быть в самом непредсказуемом месте. Например, в фотогалерее кроме PREVIEW_PICTURE и DETAIL_PICTURE введена сущность REAL_PICTURE, однажды я очень долго разбирался, почему не выводятся мною заресайженные картинки :-\
Кроме того рекомендую проверить:
- время кеша. Возможно, картинки вполне ресайзятся, но выводится старый вариант. Сбросьте кеш. На всякий случай еще откройте картинку в новом окне и CTRL+R (это уже не для Битрикса, а для nginx, если оный имеется)
- В настройках инфоблока кроме вкладки "Поля" проверить и "Поля разделов"
- так как речь идет о каталоге, неплохо проверить, с каким ИБ работает каталог. Так как возможно при установке модуля "Торговый каталог" был создан новый ИБ с торговыми предложениями.