zoukankan      html  css  js  c++  java
  • 如何将 Font Awesome 转成 PNG 图标 详细教程 含源代码

    最近因为项目上需要用到这个字体图标,但是它里面的许多也不能完全满足项目需要,因此就考虑将这个图标导出,然后自己再添加一些其他图标使用

    搜索了些解决方案,如:http://www.oschina.net/translate/how-to-convert-font-awesome-to-png-icons,但是上面的步骤过于简单,一个新手完全不会使用,比如Python自己就一点都没接触过,因此自己走了许多弯路。

    本文一方面记录以便以后自己再次使用,最重要的是将我自己的每个步骤详细的展现给有需要的大家,希望对大家有帮助。

    好 还请留个好评

    本文涉及所有资源可以到我的百度云下载:

     font-awesome-to-png

    第一步 下载图标字体源文件:

    包含以下文件:

    第二步 安装python-2.7.9(我电脑是64位的,截图也是64位,实际上只能安装32位,64位图标处理库(第二部会安装以处理图片)找不到安装路径,安装过程是一样的)

     第三步 安装图形处理库

    安装完成后:菜单》全部程序》 Python 2.7发现已经安装成功

    第四部 你下载文件里面有个 目录font-awesome-to-png 里面有将会使用的 脚本文件和字体文件(也是你第一步下载的文件)

    来点其他参数

    颜色变了,证明其他参数也是可靠的,大功告成。

    源代码1 font-awesome-to-png.py:

    #!/usr/bin/env python
    
    #
    # font-awesome-to-png.py
    #
    # Exports Font Awesome icons as PNG images.
    #
    # Copyright (c) 2012-2014 Michal Wojciechowski (http://odyniec.net/)
    #
    # Font Awesome - http://fortawesome.github.com/Font-Awesome
    #
    
    import sys, argparse, re
    from os import path, access, R_OK
    from PIL import Image, ImageFont, ImageDraw
    
    # Support Unicode literals with both Python 2 and 3
    if sys.version < '3':
        import codecs
        def u(x):
            return codecs.unicode_escape_decode(x)[0]
    
        def uchr(x):
            return unichr(x)
    else:
        def u(x):
            return x
    
        def uchr(x):
            return chr(x)
    
    # Mapping of icon names to character codes
    icons = {
        "adjust": u("uf042"),
        "adn": u("uf170"),
        "align-center": u("uf037"),
        "align-justify": u("uf039"),
        "align-left": u("uf036"),
        "align-right": u("uf038"),
        "ambulance": u("uf0f9"),
        "anchor": u("uf13d"),
        "android": u("uf17b"),
        "angle-double-down": u("uf103"),
        "angle-double-left": u("uf100"),
        "angle-double-right": u("uf101"),
        "angle-double-up": u("uf102"),
        "angle-down": u("uf107"),
        "angle-left": u("uf104"),
        "angle-right": u("uf105"),
        "angle-up": u("uf106"),
        "apple": u("uf179"),
        "archive": u("uf187"),
        "arrow-circle-down": u("uf0ab"),
        "arrow-circle-left": u("uf0a8"),
        "arrow-circle-o-down": u("uf01a"),
        "arrow-circle-o-left": u("uf190"),
        "arrow-circle-o-right": u("uf18e"),
        "arrow-circle-o-up": u("uf01b"),
        "arrow-circle-right": u("uf0a9"),
        "arrow-circle-up": u("uf0aa"),
        "arrow-down": u("uf063"),
        "arrow-left": u("uf060"),
        "arrow-right": u("uf061"),
        "arrow-up": u("uf062"),
        "arrows": u("uf047"),
        "arrows-alt": u("uf0b2"),
        "arrows-h": u("uf07e"),
        "arrows-v": u("uf07d"),
        "asterisk": u("uf069"),
        "automobile": u("uf1b9"),
        "backward": u("uf04a"),
        "ban": u("uf05e"),
        "bank": u("uf19c"),
        "bar-chart-o": u("uf080"),
        "barcode": u("uf02a"),
        "bars": u("uf0c9"),
        "beer": u("uf0fc"),
        "behance": u("uf1b4"),
        "behance-square": u("uf1b5"),
        "bell": u("uf0f3"),
        "bell-o": u("uf0a2"),
        "bitbucket": u("uf171"),
        "bitbucket-square": u("uf172"),
        "bitcoin": u("uf15a"),
        "bold": u("uf032"),
        "bolt": u("uf0e7"),
        "bomb": u("uf1e2"),
        "book": u("uf02d"),
        "bookmark": u("uf02e"),
        "bookmark-o": u("uf097"),
        "briefcase": u("uf0b1"),
        "btc": u("uf15a"),
        "bug": u("uf188"),
        "building": u("uf1ad"),
        "building-o": u("uf0f7"),
        "bullhorn": u("uf0a1"),
        "bullseye": u("uf140"),
        "cab": u("uf1ba"),
        "calendar": u("uf073"),
        "calendar-o": u("uf133"),
        "camera": u("uf030"),
        "camera-retro": u("uf083"),
        "car": u("uf1b9"),
        "caret-down": u("uf0d7"),
        "caret-left": u("uf0d9"),
        "caret-right": u("uf0da"),
        "caret-square-o-down": u("uf150"),
        "caret-square-o-left": u("uf191"),
        "caret-square-o-right": u("uf152"),
        "caret-square-o-up": u("uf151"),
        "caret-up": u("uf0d8"),
        "certificate": u("uf0a3"),
        "chain": u("uf0c1"),
        "chain-broken": u("uf127"),
        "check": u("uf00c"),
        "check-circle": u("uf058"),
        "check-circle-o": u("uf05d"),
        "check-square": u("uf14a"),
        "check-square-o": u("uf046"),
        "chevron-circle-down": u("uf13a"),
        "chevron-circle-left": u("uf137"),
        "chevron-circle-right": u("uf138"),
        "chevron-circle-up": u("uf139"),
        "chevron-down": u("uf078"),
        "chevron-left": u("uf053"),
        "chevron-right": u("uf054"),
        "chevron-up": u("uf077"),
        "child": u("uf1ae"),
        "circle": u("uf111"),
        "circle-o": u("uf10c"),
        "circle-o-notch": u("uf1ce"),
        "circle-thin": u("uf1db"),
        "clipboard": u("uf0ea"),
        "clock-o": u("uf017"),
        "cloud": u("uf0c2"),
        "cloud-download": u("uf0ed"),
        "cloud-upload": u("uf0ee"),
        "cny": u("uf157"),
        "code": u("uf121"),
        "code-fork": u("uf126"),
        "codepen": u("uf1cb"),
        "coffee": u("uf0f4"),
        "cog": u("uf013"),
        "cogs": u("uf085"),
        "columns": u("uf0db"),
        "comment": u("uf075"),
        "comment-o": u("uf0e5"),
        "comments": u("uf086"),
        "comments-o": u("uf0e6"),
        "compass": u("uf14e"),
        "compress": u("uf066"),
        "copy": u("uf0c5"),
        "credit-card": u("uf09d"),
        "crop": u("uf125"),
        "crosshairs": u("uf05b"),
        "css3": u("uf13c"),
        "cube": u("uf1b2"),
        "cubes": u("uf1b3"),
        "cut": u("uf0c4"),
        "cutlery": u("uf0f5"),
        "dashboard": u("uf0e4"),
        "database": u("uf1c0"),
        "dedent": u("uf03b"),
        "delicious": u("uf1a5"),
        "desktop": u("uf108"),
        "deviantart": u("uf1bd"),
        "digg": u("uf1a6"),
        "dollar": u("uf155"),
        "dot-circle-o": u("uf192"),
        "download": u("uf019"),
        "dribbble": u("uf17d"),
        "dropbox": u("uf16b"),
        "drupal": u("uf1a9"),
        "edit": u("uf044"),
        "eject": u("uf052"),
        "ellipsis-h": u("uf141"),
        "ellipsis-v": u("uf142"),
        "empire": u("uf1d1"),
        "envelope": u("uf0e0"),
        "envelope-o": u("uf003"),
        "envelope-square": u("uf199"),
        "eraser": u("uf12d"),
        "eur": u("uf153"),
        "euro": u("uf153"),
        "exchange": u("uf0ec"),
        "exclamation": u("uf12a"),
        "exclamation-circle": u("uf06a"),
        "exclamation-triangle": u("uf071"),
        "expand": u("uf065"),
        "external-link": u("uf08e"),
        "external-link-square": u("uf14c"),
        "eye": u("uf06e"),
        "eye-slash": u("uf070"),
        "facebook": u("uf09a"),
        "facebook-square": u("uf082"),
        "fast-backward": u("uf049"),
        "fast-forward": u("uf050"),
        "fax": u("uf1ac"),
        "female": u("uf182"),
        "fighter-jet": u("uf0fb"),
        "file": u("uf15b"),
        "file-archive-o": u("uf1c6"),
        "file-audio-o": u("uf1c7"),
        "file-code-o": u("uf1c9"),
        "file-excel-o": u("uf1c3"),
        "file-image-o": u("uf1c5"),
        "file-movie-o": u("uf1c8"),
        "file-o": u("uf016"),
        "file-pdf-o": u("uf1c1"),
        "file-photo-o": u("uf1c5"),
        "file-picture-o": u("uf1c5"),
        "file-powerpoint-o": u("uf1c4"),
        "file-sound-o": u("uf1c7"),
        "file-text": u("uf15c"),
        "file-text-o": u("uf0f6"),
        "file-video-o": u("uf1c8"),
        "file-word-o": u("uf1c2"),
        "file-zip-o": u("uf1c6"),
        "files-o": u("uf0c5"),
        "film": u("uf008"),
        "filter": u("uf0b0"),
        "fire": u("uf06d"),
        "fire-extinguisher": u("uf134"),
        "flag": u("uf024"),
        "flag-checkered": u("uf11e"),
        "flag-o": u("uf11d"),
        "flash": u("uf0e7"),
        "flask": u("uf0c3"),
        "flickr": u("uf16e"),
        "floppy-o": u("uf0c7"),
        "folder": u("uf07b"),
        "folder-o": u("uf114"),
        "folder-open": u("uf07c"),
        "folder-open-o": u("uf115"),
        "font": u("uf031"),
        "forward": u("uf04e"),
        "foursquare": u("uf180"),
        "frown-o": u("uf119"),
        "gamepad": u("uf11b"),
        "gavel": u("uf0e3"),
        "gbp": u("uf154"),
        "ge": u("uf1d1"),
        "gear": u("uf013"),
        "gears": u("uf085"),
        "gift": u("uf06b"),
        "git": u("uf1d3"),
        "git-square": u("uf1d2"),
        "github": u("uf09b"),
        "github-alt": u("uf113"),
        "github-square": u("uf092"),
        "gittip": u("uf184"),
        "glass": u("uf000"),
        "globe": u("uf0ac"),
        "google": u("uf1a0"),
        "google-plus": u("uf0d5"),
        "google-plus-square": u("uf0d4"),
        "graduation-cap": u("uf19d"),
        "group": u("uf0c0"),
        "h-square": u("uf0fd"),
        "hacker-news": u("uf1d4"),
        "hand-o-down": u("uf0a7"),
        "hand-o-left": u("uf0a5"),
        "hand-o-right": u("uf0a4"),
        "hand-o-up": u("uf0a6"),
        "hdd-o": u("uf0a0"),
        "header": u("uf1dc"),
        "headphones": u("uf025"),
        "heart": u("uf004"),
        "heart-o": u("uf08a"),
        "history": u("uf1da"),
        "home": u("uf015"),
        "hospital-o": u("uf0f8"),
        "html5": u("uf13b"),
        "image": u("uf03e"),
        "inbox": u("uf01c"),
        "indent": u("uf03c"),
        "info": u("uf129"),
        "info-circle": u("uf05a"),
        "inr": u("uf156"),
        "instagram": u("uf16d"),
        "institution": u("uf19c"),
        "italic": u("uf033"),
        "joomla": u("uf1aa"),
        "jpy": u("uf157"),
        "jsfiddle": u("uf1cc"),
        "key": u("uf084"),
        "keyboard-o": u("uf11c"),
        "krw": u("uf159"),
        "language": u("uf1ab"),
        "laptop": u("uf109"),
        "leaf": u("uf06c"),
        "legal": u("uf0e3"),
        "lemon-o": u("uf094"),
        "level-down": u("uf149"),
        "level-up": u("uf148"),
        "life-bouy": u("uf1cd"),
        "life-ring": u("uf1cd"),
        "life-saver": u("uf1cd"),
        "lightbulb-o": u("uf0eb"),
        "link": u("uf0c1"),
        "linkedin": u("uf0e1"),
        "linkedin-square": u("uf08c"),
        "linux": u("uf17c"),
        "list": u("uf03a"),
        "list-alt": u("uf022"),
        "list-ol": u("uf0cb"),
        "list-ul": u("uf0ca"),
        "location-arrow": u("uf124"),
        "lock": u("uf023"),
        "long-arrow-down": u("uf175"),
        "long-arrow-left": u("uf177"),
        "long-arrow-right": u("uf178"),
        "long-arrow-up": u("uf176"),
        "magic": u("uf0d0"),
        "magnet": u("uf076"),
        "mail-forward": u("uf064"),
        "mail-reply": u("uf112"),
        "mail-reply-all": u("uf122"),
        "male": u("uf183"),
        "map-marker": u("uf041"),
        "maxcdn": u("uf136"),
        "medkit": u("uf0fa"),
        "meh-o": u("uf11a"),
        "microphone": u("uf130"),
        "microphone-slash": u("uf131"),
        "minus": u("uf068"),
        "minus-circle": u("uf056"),
        "minus-square": u("uf146"),
        "minus-square-o": u("uf147"),
        "mobile": u("uf10b"),
        "mobile-phone": u("uf10b"),
        "money": u("uf0d6"),
        "moon-o": u("uf186"),
        "mortar-board": u("uf19d"),
        "music": u("uf001"),
        "navicon": u("uf0c9"),
        "openid": u("uf19b"),
        "outdent": u("uf03b"),
        "pagelines": u("uf18c"),
        "paper-plane": u("uf1d8"),
        "paper-plane-o": u("uf1d9"),
        "paperclip": u("uf0c6"),
        "paragraph": u("uf1dd"),
        "paste": u("uf0ea"),
        "pause": u("uf04c"),
        "paw": u("uf1b0"),
        "pencil": u("uf040"),
        "pencil-square": u("uf14b"),
        "pencil-square-o": u("uf044"),
        "phone": u("uf095"),
        "phone-square": u("uf098"),
        "photo": u("uf03e"),
        "picture-o": u("uf03e"),
        "pied-piper": u("uf1a7"),
        "pied-piper-alt": u("uf1a8"),
        "pied-piper-square": u("uf1a7"),
        "pinterest": u("uf0d2"),
        "pinterest-square": u("uf0d3"),
        "plane": u("uf072"),
        "play": u("uf04b"),
        "play-circle": u("uf144"),
        "play-circle-o": u("uf01d"),
        "plus": u("uf067"),
        "plus-circle": u("uf055"),
        "plus-square": u("uf0fe"),
        "plus-square-o": u("uf196"),
        "power-off": u("uf011"),
        "print": u("uf02f"),
        "puzzle-piece": u("uf12e"),
        "qq": u("uf1d6"),
        "qrcode": u("uf029"),
        "question": u("uf128"),
        "question-circle": u("uf059"),
        "quote-left": u("uf10d"),
        "quote-right": u("uf10e"),
        "ra": u("uf1d0"),
        "random": u("uf074"),
        "rebel": u("uf1d0"),
        "recycle": u("uf1b8"),
        "reddit": u("uf1a1"),
        "reddit-square": u("uf1a2"),
        "refresh": u("uf021"),
        "renren": u("uf18b"),
        "reorder": u("uf0c9"),
        "repeat": u("uf01e"),
        "reply": u("uf112"),
        "reply-all": u("uf122"),
        "retweet": u("uf079"),
        "rmb": u("uf157"),
        "road": u("uf018"),
        "rocket": u("uf135"),
        "rotate-left": u("uf0e2"),
        "rotate-right": u("uf01e"),
        "rouble": u("uf158"),
        "rss": u("uf09e"),
        "rss-square": u("uf143"),
        "rub": u("uf158"),
        "ruble": u("uf158"),
        "rupee": u("uf156"),
        "save": u("uf0c7"),
        "scissors": u("uf0c4"),
        "search": u("uf002"),
        "search-minus": u("uf010"),
        "search-plus": u("uf00e"),
        "send": u("uf1d8"),
        "send-o": u("uf1d9"),
        "share": u("uf064"),
        "share-alt": u("uf1e0"),
        "share-alt-square": u("uf1e1"),
        "share-square": u("uf14d"),
        "share-square-o": u("uf045"),
        "shield": u("uf132"),
        "shopping-cart": u("uf07a"),
        "sign-in": u("uf090"),
        "sign-out": u("uf08b"),
        "signal": u("uf012"),
        "sitemap": u("uf0e8"),
        "skype": u("uf17e"),
        "slack": u("uf198"),
        "sliders": u("uf1de"),
        "smile-o": u("uf118"),
        "sort": u("uf0dc"),
        "sort-alpha-asc": u("uf15d"),
        "sort-alpha-desc": u("uf15e"),
        "sort-amount-asc": u("uf160"),
        "sort-amount-desc": u("uf161"),
        "sort-asc": u("uf0de"),
        "sort-desc": u("uf0dd"),
        "sort-down": u("uf0dd"),
        "sort-numeric-asc": u("uf162"),
        "sort-numeric-desc": u("uf163"),
        "sort-up": u("uf0de"),
        "soundcloud": u("uf1be"),
        "space-shuttle": u("uf197"),
        "spinner": u("uf110"),
        "spoon": u("uf1b1"),
        "spotify": u("uf1bc"),
        "square": u("uf0c8"),
        "square-o": u("uf096"),
        "stack-exchange": u("uf18d"),
        "stack-overflow": u("uf16c"),
        "star": u("uf005"),
        "star-half": u("uf089"),
        "star-half-empty": u("uf123"),
        "star-half-full": u("uf123"),
        "star-half-o": u("uf123"),
        "star-o": u("uf006"),
        "steam": u("uf1b6"),
        "steam-square": u("uf1b7"),
        "step-backward": u("uf048"),
        "step-forward": u("uf051"),
        "stethoscope": u("uf0f1"),
        "stop": u("uf04d"),
        "strikethrough": u("uf0cc"),
        "stumbleupon": u("uf1a4"),
        "stumbleupon-circle": u("uf1a3"),
        "subscript": u("uf12c"),
        "suitcase": u("uf0f2"),
        "sun-o": u("uf185"),
        "superscript": u("uf12b"),
        "support": u("uf1cd"),
        "table": u("uf0ce"),
        "tablet": u("uf10a"),
        "tachometer": u("uf0e4"),
        "tag": u("uf02b"),
        "tags": u("uf02c"),
        "tasks": u("uf0ae"),
        "taxi": u("uf1ba"),
        "tencent-weibo": u("uf1d5"),
        "terminal": u("uf120"),
        "text-height": u("uf034"),
        "text-width": u("uf035"),
        "th": u("uf00a"),
        "th-large": u("uf009"),
        "th-list": u("uf00b"),
        "thumb-tack": u("uf08d"),
        "thumbs-down": u("uf165"),
        "thumbs-o-down": u("uf088"),
        "thumbs-o-up": u("uf087"),
        "thumbs-up": u("uf164"),
        "ticket": u("uf145"),
        "times": u("uf00d"),
        "times-circle": u("uf057"),
        "times-circle-o": u("uf05c"),
        "tint": u("uf043"),
        "toggle-down": u("uf150"),
        "toggle-left": u("uf191"),
        "toggle-right": u("uf152"),
        "toggle-up": u("uf151"),
        "trash-o": u("uf014"),
        "tree": u("uf1bb"),
        "trello": u("uf181"),
        "trophy": u("uf091"),
        "truck": u("uf0d1"),
        "try": u("uf195"),
        "tumblr": u("uf173"),
        "tumblr-square": u("uf174"),
        "turkish-lira": u("uf195"),
        "twitter": u("uf099"),
        "twitter-square": u("uf081"),
        "umbrella": u("uf0e9"),
        "underline": u("uf0cd"),
        "undo": u("uf0e2"),
        "university": u("uf19c"),
        "unlink": u("uf127"),
        "unlock": u("uf09c"),
        "unlock-alt": u("uf13e"),
        "unsorted": u("uf0dc"),
        "upload": u("uf093"),
        "usd": u("uf155"),
        "user": u("uf007"),
        "user-md": u("uf0f0"),
        "users": u("uf0c0"),
        "video-camera": u("uf03d"),
        "vimeo-square": u("uf194"),
        "vine": u("uf1ca"),
        "vk": u("uf189"),
        "volume-down": u("uf027"),
        "volume-off": u("uf026"),
        "volume-up": u("uf028"),
        "warning": u("uf071"),
        "wechat": u("uf1d7"),
        "weibo": u("uf18a"),
        "weixin": u("uf1d7"),
        "wheelchair": u("uf193"),
        "windows": u("uf17a"),
        "won": u("uf159"),
        "wordpress": u("uf19a"),
        "wrench": u("uf0ad"),
        "xing": u("uf168"),
        "xing-square": u("uf169"),
        "yahoo": u("uf19e"),
        "yen": u("uf157"),
        "youtube": u("uf167"),
        "youtube-play": u("uf16a"),
        "youtube-square": u("uf166"),
    }
    
    
    class ListAction(argparse.Action):
        def __call__(self, parser, namespace, values, option_string=None):
            for icon in sorted(icons.keys()):
                print(icon)
            exit(0)
    
    
    class ListUpdateAction(argparse.Action):
        def __call__(self, parser, namespace, values, option_string=None):
            print("icons = {")
            for icon in sorted(icons.keys()):
                print(u'    "%s": u("\u%x"),' % (icon, ord(icons[icon])))
            print("}")
            exit(0)
    
    
    def export_icon(icon, size, filename, font, color):
        image = Image.new("RGBA", (size, size), color=(0,0,0,0))
    
        draw = ImageDraw.Draw(image)
    
        # Initialize font
        font = ImageFont.truetype(font, size)
    
        # Determine the dimensions of the icon
        width,height = draw.textsize(icons[icon], font=font)
    
        draw.text(((size - width) / 2, (size - height) / 2), icons[icon],
                font=font, fill=color)
    
        # Get bounding box
        bbox = image.getbbox()
    
        # Create an alpha mask
        imagemask = Image.new("L", (size, size), 0)
        drawmask = ImageDraw.Draw(imagemask)
    
        # Draw the icon on the mask
        drawmask.text(((size - width) / 2, (size - height) / 2), icons[icon],
            font=font, fill=255)
    
        # Create a solid color image and apply the mask
        iconimage = Image.new("RGBA", (size,size), color)
        iconimage.putalpha(imagemask)
    
        if bbox:
            iconimage = iconimage.crop(bbox)
    
        borderw = int((size - (bbox[2] - bbox[0])) / 2)
        borderh = int((size - (bbox[3] - bbox[1])) / 2)
    
        # Create output image
        outimage = Image.new("RGBA", (size, size), (0,0,0,0))
        outimage.paste(iconimage, (borderw,borderh))
    
        # Save file
        outimage.save(filename)
    
    
    class LoadCSSAction(argparse.Action):
        def __call__(self, parser, namespace, values, option_string=None):
            global icons
            icons = LoadCSSAction._load_css(values)
    
        @staticmethod
        def _load_css(filename):
            import tinycss
            new_icons = {}
            parser = tinycss.make_parser("page3")
    
            try:
                stylesheet = parser.parse_stylesheet_file(filename)
            except IOError:
                print >> sys.stderr, ("Error: CSS file (%s) can't be opened"
                    % (filename))
                exit(1)
    
            is_icon = re.compile(u(".fa-(.*):before,?"))
            for rule in stylesheet.rules:
                selector = rule.selector.as_css()
                for match in is_icon.finditer(selector):
                    name = match.groups()[0]
                    for declaration in rule.declarations:
                        if declaration.name == u"content":
                            val = declaration.value.as_css()
                            if val.startswith('"') and val.endswith('"'):
                                val = val[1:-1]
                            new_icons[name] = uchr(int(val[1:], 16))
            return new_icons
    
    
    if __name__ == '__main__':
        parser = argparse.ArgumentParser(
                description="Exports Font Awesome icons as PNG images.")
    
        parser.add_argument("icon", type=str, nargs="+",
                help="The name(s) of the icon(s) to export (or "ALL" for all icons)")
        parser.add_argument("--color", type=str, default="black",
                help="Color (HTML color code or name, default: black)")
        parser.add_argument("--filename", type=str,
                help="The name of the output file (it must end with ".png"). If " +
                "all files are exported, it is used as a prefix.")
        parser.add_argument("--font", type=str, default="fontawesome-webfont.ttf",
                help="Font file to use (default: fontawesome-webfont.ttf)")
        parser.add_argument("--css", type=str, default="", action=LoadCSSAction,
                help="Path to the CSS file defining icon names (instead of the " +
                "predefined list)")
        parser.add_argument("--list", nargs=0, action=ListAction,
                help="List available icon names and exit")
        parser.add_argument("--list-update", nargs=0, action=ListUpdateAction,
                help=argparse.SUPPRESS)
        parser.add_argument("--size", type=int, default=16,
                help="Icon size in pixels (default: 16)")
    
        args = parser.parse_args()
        icon = args.icon
        size = args.size
        font = args.font
        color = args.color
    
        if args.font:
            if not path.isfile(args.font) or not access(args.font, R_OK):
                print >> sys.stderr, ("Error: Font file (%s) can't be opened"
                        % (args.font))
                exit(1)
    
        if args.icon == [ "ALL" ]:
            # Export all icons
            selected_icons = sorted(icons.keys())
        else:
            selected_icons = []
    
            # Icon name was given
            for icon in args.icon:
                # Strip the "icon-" prefix, if present
                if icon.startswith("icon-"):
                    icon = icon[5:]
    
                if icon in icons:
                    selected_icons.append(icon)
                else:
                    print >> sys.stderr, "Error: Unknown icon name (%s)" % (icon)
                    sys.exit(1)
    
        for icon in selected_icons:
            if len(selected_icons) > 1:
                # Exporting multiple icons -- treat the filename option as name prefix
                filename = (args.filename or "") + icon + ".png"
            else:
                # Exporting one icon
                if args.filename:
                    filename = args.filename
                else:
                    filename = icon + ".png"
    
            print("Exporting icon "%s" as %s (%ix%i pixels)" %
                    (icon, filename, size, size))
    
            export_icon(icon, size, filename, font, color)
    

     帮助文档 README.md:

    Font Awesome to PNG
    ===================
    
    This program allows you to extract the awesome
    [Font Awesome] (http://fortawesome.github.com/Font-Awesome/) icons as PNG images
    of specified size.
    
    ### Usage
    
        font-awesome-to-png.py [-h] [--color COLOR] [--filename FILENAME]
                               [--font FONT] [--css CSS] [--list] [--size SIZE]
                               icon [icon ...]
    
        positional arguments:
          icon                 The name(s) of the icon(s) to export (or "ALL" for
                               all icons)
    
        optional arguments:
          --color COLOR        Color (HTML color code or name, default: black)
          --filename FILENAME  The name of the output file (it must end with
                               ".png"). If all files are exported, it is used as a
                               prefix.
          --font FONT          Font file to use (default: fontawesome-webfont.ttf)
          --css CSS            Path to the CSS file defining icon names (instead of
                               the predefined list)
          --list               List available icon names and exit
          --size SIZE          Icon size in pixels (default: 16)
    
        hidden optional arguments:
         --list-update         List available icon names and codes in format suitable
                               for updating the program source.
    
    To use the program, you need the Font Awesome TTF file, which is available in
    [Font Awesome Github repository] (https://github.com/FortAwesome/Font-Awesome).
    
    The internal icon list is matched to Font Awesome 4.1.0.  To use a later/different
    version, use font-awesome.css from the Font Awesome GitHub repository.
    
    ### Examples
    
    Export the "play" and "stop" icons as 24x24 pixels images:
    
        font-awesome-to-png.py --size 24 play stop
    
    Export the asterisk icon as 32x32 pixels image, in blue:
    
        font-awesome-to-png.py --size 32 --color blue asterisk
    
    Export all icons as 16x16 pixels images:
    
        font-awesome-to-png.py ALL
    

      

  • 相关阅读:
    【零基础】量子纠缠图像问世,简单解读实验原理
    【零基础】一文读懂CPU(从二极管到超大规模集成电路)
    【零基础】搞定LAMP(linux、apache、mysql、php)环境安装图文教程(基于centos7)
    【零基础】Selenium:Webdriver图文入门教程java篇(附相关包下载)
    【零基础】快速入门爬虫框架HtmlUnit
    【零基础】speech driven animation中文安装使用指南
    【零基础】斯坦福四足机器人DIY指引
    【零基础】为什么Facebook发币就不一样
    【零基础】彻底搞懂51单片机各种型号(ATMEL系列)
    【零基础】简单说说一键果体APP的AI
  • 原文地址:https://www.cnblogs.com/herenwei-wayne/p/4641552.html
Copyright © 2011-2022 走看看