Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ksz2k/letter_avatar
Ruby gem for creating letter avatar from user's name (or any other string :-) ).
https://github.com/ksz2k/letter_avatar
letter-avatar ruby
Last synced: about 1 month ago
JSON representation
Ruby gem for creating letter avatar from user's name (or any other string :-) ).
- Host: GitHub
- URL: https://github.com/ksz2k/letter_avatar
- Owner: ksz2k
- License: gpl-2.0
- Created: 2014-09-11T07:59:14.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2021-09-06T15:32:51.000Z (over 3 years ago)
- Last Synced: 2024-10-03T11:08:13.324Z (3 months ago)
- Topics: letter-avatar, ruby
- Language: Ruby
- Homepage:
- Size: 172 KB
- Stars: 272
- Watchers: 9
- Forks: 48
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-identicons - LetterAvatar
README
# LetterAvatar
Gem for creating letter avatar from user's name (or any other strong / character).
Code extracted from [discourse](https://www.discourse.org/) source (thanks guys!) - I needed this functionality in three projects, so here's the gem! :-)
[![Gem Version](https://badge.fury.io/rb/letter_avatar.svg)](https://badge.fury.io/rb/letter_avatar)
[![Code Climate](https://codeclimate.com/github/ksz2k/letter_avatar/badges/gpa.svg)](https://codeclimate.com/github/ksz2k/letter_avatar)## Examples
#### Google's Inbox Palette
## Installation
System requirements
```bash
$ sudo apt-get install -y imagemagick
```Mac OS X
```bash
$ brew install imagemagick ghostscript
```Add this line to your application's Gemfile:
```ruby
gem 'letter_avatar'
```And then execute:
```bash
$ bundle
```Or install it yourself as:
```bash
$ gem install letter_avatar
```## Configuration
```ruby
LetterAvatar.setup do |config|
config.fill_color = 'rgba(255, 255, 255, 1)' # default is 'rgba(255, 255, 255, 0.65)'
config.cache_base_path = 'public/system/lets' # default is 'public/system'
config.colors_palette = :iwanthue # default is :google
config.weight = 500 # default is 300
config.annotate_position = '-0+10' # default is -0+5
config.letters_count = 2 # default is 1
config.pointsize = 70 # default is 140
end
```#### Color palette
We have three color palettes implemented: `iwanthue`, `google` and `custom`.
Each of them have different colors, but the `iwanthue` also differently calculates the color for specified username.
The `google` selected will generate the same avatar for both, "Krzysiek" and "ksz2k" usernames given (both of them starts with letter "k"), but `iwanthue` will calculate it's md5 and then selects color, so there's huge chance that these usernames get different colors.
##### Custom palette definition
You can define your own `custom` palette:
```ruby
LetterAvatar.setup do |config|
config.colors_palette = :custom
config.custom_palette = [[120, 132, 205], [91, 149, 249], [72, 194, 249], [69, 208, 226]]
end
```##### Custom font definition
You can define your own `custom` palette:
```ruby
LetterAvatar.setup do |config|
config.font = File.join(File.expand_path('../../', File.dirname(__FILE__)), 'app/assets/fonts', 'font_name.ext')
end
```## Usage
```ruby
LetterAvatar.generate 'ksz2k', 200
=> "public/system/letter_avatars/2/K/87_178_230/200.png"
```### In your controllers / views
There's also helper for this. To use it, you need:
* in your helper (eg. `ApplicationHelper`) or controller:
```ruby
include LetterAvatar::AvatarHelper
```* and in your view:
```ruby
letter_avatar_for('ksz2k', 200)
=> "public/system/letter_avatars/2/K/87_178_230/200.png"
# or
letter_avatar_url('ksz2k', 200)
=> "/system/letter_avatars/2/K/87_178_230/200.png"
# or even
letter_avatar_tag('ksz2k', 200, class: 'av')
=> ""
```### In your model
Say, you have a model `User` (which must have attribute or method `name`)
```ruby
require 'letter_avatar/has_avatar'class User
include LetterAvatar::HasAvatar
...def name
'ksz2k'
end
end
```Then, in your views you can use:
```ruby
@user.avatar_path(200)
=> "public/system/letter_avatars/2/K/87_178_230/200.png"
# or
@user.avatar_url(200)
=> "/system/letter_avatars/2/K/87_178_230/200.png"
```### Way to support non [a-z0-9] charsets
```rb
class User
def username_for_avatar
# Translate Chinese hanzi to pinyin
# https://github.com/flyerhzm/chinese_pinyin
Pinyin.t(self.username)
end
end
```Then you can get right avatar now:
```rb
letter_avatar_for(user.username_for_avatar, 200)
# or
letter_avatar_tag(user.username_for_avatar, 200, class: 'av')
```## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request