DefaultAvatarSize is the target CSS pixel size for avatar generation. It is
multiplied by setting.Avatar.RenderedSizeFactor and the resulting size is the
usual size of avatar image saved on server, unless the original file is smaller
than the size after resizing.
HashAvatar will generate a unique string, which ensures that when there's a
different unique ID while the data is the same, it will generate a different
output. It will generate the output according to:
HEX(HASH(uniqueID || - || data))
The hash being used is SHA256.
The sole purpose of the unique ID is to generate a distinct hash Such that
two unique IDs with the same data will have a different hash output.
The "-" byte is important to ensure that data cannot be modified such that
the first byte is a number, which could lead to a "collision" with the hash
of another unique ID.
ProcessAvatarImage process the avatar image data, crop and resize it if necessary.
the returned data could be the original image if no processing is needed.