Генерируем аватар с первой буквой пользователя

Данную задачу я встречаю впервые, поэтому возможно упускаю какую-то инструкцию.
Используется библиотека Letter Avatar



Эту библиотеку можно скачать с гитхаба и подключить, либо через composer
Я использовал composer

Необходимо создать плагин setUserAvatar на событие OnUserSave

<?php
require_once(MODX_BASE_PATH.'assets/lib/vendor/autoload.php');
use YoHang88\LetterAvatar\LetterAvatar;

// если необходимо назначать аватар только при создании пользователя, добавьте условие 
// && $mode == 'new'

if ($modx->event->name === 'OnUserSave') { 
        
    $profile = $user->getOne('Profile');
    $username = $profile->get('username'); // источник букв
    
    if(!$avatar = $profile->get('photo')) {
        $avatar = new LetterAvatar($username, 'square', 100);
        $avatar_name = $username.'_'.time().'.jpg';
        $avatar->saveAs(MODX_BASE_PATH.'assets/images/users/'.$avatar_name , LetterAvatar::MIME_TYPE_JPEG);
        
        $profile->set('photo','assets/images/users/'.$avatar_name);
        $profile->save();
    }    
    
}

В качестве источника букв можно указать любое поле
Евгений Webinmd
26 апреля 2021, 02:28
modx.pro
3
1 454
+6

Комментарии: 6

Юрий
26 апреля 2021, 08:39
+3
Для этого не нужна отдельная библиотека для генерации jpg можно использовать svg:

<svg xmlns="http://www.w3.org/2000/svg"
    width="50"
     height="50"
     viewBox="0 0 50 50">
     <rect fill="#dedede"
          width="50"
          height="50"/>
     <text fill="rgba(0,0,0,0.6)"
          font-family="sans-serif"
          font-size="20"
          dy="8"
          font-weight="bold"
          x="50%"
          y="50%"
          text-anchor="middle">{{ getFirstLetter(fio) }}
     </text>
</svg>
    Роман
    26 апреля 2021, 08:57
    0
    Только нужно написать еще принцип генерации цвета. =)
      Евгений Webinmd
      26 апреля 2021, 10:39
      0
      Вариант отличный, но мне немного не подошел, нужны были разные цвета, пользователь может потом в ЛК сменить аватарку. Да и в дереве комментариев удобнее просто вывести фото из профиля
      Николай Савин
      26 апреля 2021, 08:57
      0
      А я всю дорогу на css делал. Первые буквы легко феномом или сниппетом получить, а дальше вопрос оформления.
        Евгений Webinmd
        26 апреля 2021, 10:38
        0
        мне показалось что удобнее 1 раз сформировать аватарку и все
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      6