Userpic в Liferay

Этот пост о том, как использовать стандартные средства Liferay для отображения картинки пользователя. При этом будет расмотрен вариант png картинки с прозрачным фоном.

Итак, для начала необходимо создать тестового пользователя, скажем Agent Smith.

Как видим стандартная картинка. Теперь берем любую картинку в png формате и добавляем пользователю userpic. Для примера можно взять эту — http://findicons.com/icon/13483/user,
512x512, 126 KB.

Liferay производит преобразование этой картинки и сохраняет ее в удобном для себя размере, при этом разширение файла сохраняется, но прозрачность теряется.

В базе данных можно найти информацию об этом файле. Как видим размеры совсем не те.

А по ID записи можно найти сохраненное изображение на диске.

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

Кстати, чтобы получить доступ к изображению пользователя где-нибудь на jsp страничке, необходимо сделать такую ссылку:

<img src="${themeDisplay.pathImage}/user_portrait?screenName=${user.screenName}&companyId=${user.companyId}" />

При этом на страничку необходимо передать объект com.liferay.portal.model.User с необходимым пользователем.

Проверено только в Liferay 6.0.5.