simpleicons
Use a wide-range of icons derived from the simple-icons repo in python. Go to their website for a full list of icons. The slug version must be used for the icon_name
. The icons folder that accompanies the package has all the files. The package uses the latest verison of Simple Icons. It does not depend on the filesystem.
Installation
Install with pip install simpleicons
. Keep in mind that this is a fairly large package due to all the icons.
Usage
General Usage
The API can then be used as follows, where [ICON SLUG] is replaced by a slug:
from simpleicons.all import icons
icons.get('[ICON SLUG]')
icon = icons.get('simpleicons')
print(icon.__dict__)
"""
{
'title': 'Simple Icons',
'slug': 'simpleicons',
'hex': '111111',
'source': 'https://simpleicons.org/',
'svg': '<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">...</svg>',
'path': 'M12 12v-1.5c-2.484 ...',
'guidelines': 'https://simpleicons.org/styleguide',
'license': {
type: '...',
url: 'https://example.com/'
}
}
"""
NOTE: The guidelines
entry will be None
if we do not yet have guidelines data for the icon.
NOTE: The license
entry will be None
if we do not yet have license data for the icon.
Alternatively you can import the needed icons individually, where [ICON SLUG] is replaced by a slug:
from simpleicons.icons import si_[ICON_SLUG]
from simpleicons.icons import si_simpleicons
Lastly, the icons
object is also enumerable. This is useful if you want to do a computation on every icon:
from simpleicons.all import icons
for (key, icon in icons) {
}
XML
The XML for each icon can be easily manipulated with either of two functions:
Icon.get_xml(**attrs) -> ElementTree
from simpleicons.icons import si_simpleicons
si_simpleicons.get_xml(fill="blue")
Icon.get_xml_bytes(**attrs) -> bytes
from simpleicons.icons import si_simpleicons
si_simpleicons.get_xml_bytes(fill="blue")
Image
In order to use this, you must install the extras: pip install -e simpleicons[imaging]
. Icons can be converted to PIL Images with icon_to_image(icon_xml: bytes, bg: int=0xffffff, scale: Tuple[int, int]=(1, 1)) -> Image
:
from simpleicons.icons import si_simpleicons
from simpleicons.image import icon_to_image
xml_bytes = si_simpleicons.get_xml_bytes(fill="blue")
img = icon_to_image(xml_bytes, bg=0x000000, scale=(5, 5))
img.putalpha(32)
img.save("simpleicons_blue.png")