Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Generates a personal default avatar for new Plone users

Project Description


ftw.avatar generates a personal default avatar for new Plone users.


Simply install the ftw.avatar egg by adding it to the dependencies in your package or by adding it to your buildout configuration:

eggs +=

There is no need to install the addon in the Plone site, it automatically hooks in.


Generating avatars requires a Pillow (or PIL) installation with freetype support.

freetype can easily be installed on OS X with homebrew:

$ brew install freetype

After installing freetype Pillow may need to be rebuilt.

Default avatar generation

ftw.avatar generates default avatars for users which have not yet defined an avatar (Personal portrait) in the personal preferences. The avatar is generated with a random background color and two characters of their name.


Plone patches

Maximum user portait scale

Products.PlonePAS limits the maximum size of user portraits (a.k.a. avatars) to 75x100. ftw.avatar increases the size to a maximum of 300x300, allowing to build pages with bigger avatars such as user pages.

Default user portrait patch

ftw.avatar patches Products.PlonePAS to generate a default avatar when the user portrait is retrieved the first time and the user has not yet set an avatar. membership_tool.getPersonalPortrait() is patched.

Avatar scaling

ftw.avatar extends the avatar default view to accept a scaling parameter. The size parameter is used as maximum width and maximum height for the scale.

Example URL: http://localhost:8080/Plone/portal_memberdata/portraits/admin?size=26

Font licensing

For generating the avatar the font Fantasque Sans Mono is used. The font is licensed under the SIL Open Font License, see the License File


2.0.1 (2016-08-12)

  • Fix aggressive caching of the portrait image by not considering the modified date because the OFS image does not have one (is acquired instead). [mbaechtold]

2.0.0 (2016-06-01)

  • Changed utility method IAvatarGenerator.generate to take userid instead of full name. This makes the utility more flexible while overwriting because the user can now be identified accurately. [lknoepfel]

1.0.7 (2015-09-02)

  • Fix error when fullname has leading spaces. [jone]

1.0.6 (2015-03-09)

  • Fix error when portrait is stored as Pdata object. [jone]

1.0.5 (2015-01-09)

  • Fix user fullname lookup when user does not exist. [jone]

1.0.4 (2015-01-08)

  • Fix userid lookup when user does not exist. [jone]

1.0.3 (2014-09-15)

  • BugFix: Do not break if username (loginname) is passed as userid. Like does until 2.3.2 [mathias.leimgruber]

1.0.2 (2014-05-03)

  • Fix _imagingft check to support Pillow >= 2.1.0, where imports have changed. [jone]

1.0.1 (2014-02-07)

  • Do not try to generate the image if _imagingft is not installed. Log an error instead. [Julian Infanger]

1.0.0 (2014-02-06)

  • Initial implementation. [jone]
Release History

Release History

This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date (86.0 kB) Copy SHA256 Checksum SHA256 Source Aug 12, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting