LoginSignup
11
9

More than 5 years have passed since last update.

Python + PIL でダミー画像をつくる。

Posted at

Python + PIL で、Webページのレイアウトなんかに使うダミー画像(ワイヤーフレーム画像というの)を一気に作るスクリプトを作成しました。

やっつけ風味。Pythonは2.7を使っています。

image-wire-frame-box.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
ワイヤーフレーム画像を作成する
'''

import Image
import ImageDraw
import ImageFont
import sys


def make_image(screen, prefix, extension, pen_color, bg_color):
    """
    画像ファイルを作成
    """

    # フラットフォーム毎にフォントのパスは違うので、その点を考慮(実は、やっつけ)
    if sys.platform == "darwin":
        # OSX  の場合
        # 日本語フォントはうまく行かなかった
        #FONTPATH = '/Library/Fonts/Osaka.ttf'
        FONTPATH = '/Library/Fonts/Verdana.ttf'
    elif sys.platform == "linux2":
        # Linux の場合
        FONTPATH = '/usr/share/fonts/truetype/fonts-japanese-gothic.ttf'
    else:
        # それ以外はWindowsと判定する(やっつけ)
        # FONTPATH = 'hgrme.ttc'
        FONTPATH = 'C:\WINDOWS\Fonts\MSGOTHIC.ttc'

    # フォントを指定
    font = ImageFont.truetype(FONTPATH, 24, encoding='utf-8')

    img = Image.new('RGB', screen, bg_color)
    x, y = img.size
    u = x - 1
    v = y - 1
    draw = ImageDraw.Draw(img)

    draw.line((0, 0, u, 0), pen_color)
    draw.line((0, 0, u, v), pen_color)
    draw.line((0, 0, 0, v), pen_color)
    draw.line((u, 0, 0, v), pen_color)
    draw.line((u, 0, u, v), pen_color)
    draw.line((0, v, u, v), pen_color)

    # 画像に文字を入れる(やっつけ)
    if x > 63 and y > 24:
        draw.text((2, (y - 24) / 2), str(x) + "x" + str(y),
            font=font, fill=pen_color)

    savefile = prefix + str(x) + "x" + str(y) + extension
    img.save(savefile)

if __name__ == '__main__':
    # 画像のサイズ
    screens = (
        (16, 16),      # favicon
        (32, 32),      # favicon
        (24, 24),      # windows icon
        (48, 48),      # windows icon / avatar
        (96, 96),      # windows icon / avatar
        (64, 64),      # mac icon / avatar
        (128, 128),    # mac icon / avatar
        (100, 100),    # icon / avatar
        (150, 150),    # icon / avatar
        (256, 256),    # icon / avatar ----
        (320, 240),    # QVGA
        (240, 320),    # QVGA
        (640, 480),    # VGA
        (480, 640),    # VGA(縦)
        (800, 600),    # SVGA
        (600, 800),    # SVGA(縦)
        (1024, 768),   # XGA
        (768, 1024),   # XGA(縦)
        (1280, 960),   # Quad-VGA
        (960, 1280),   # Quad-VGA(縦)
        (1600, 1200),  # UXGA
        (1200, 1600),  # UXGA(縦)
        (1280, 720),   # HDTV 720p
        (720, 1280),   # HDTV 720p(縦)
        (1920, 1080),  # HDTV 1080p
        (1080, 1920),  # HDTV 1080p(縦)----
        (88, 31),      # IMU Micro Bar マイクロバー
        (120, 60),     # IMU Button 2 ボタン2
        (160, 600),    # IMU Wide Skyscraper ワイド スカイスクレイパー
        (300, 600),    # IMU Half Page Ad ハーフ ページ
        (180, 150),    # IMU Rectangle レクタングル(小)
        (300, 250),    # IMU Medium Rectangle レクタングル(中)
        (728, 90),     # IMU Leaderboard ビッグバナー
        (120, 90),     # IMU (削除)Button 1 ボタン1
        (120, 240),    # IMU (削除)Vertical Banner 縦長バナー
        (120, 600),    # IMU (削除)Skyscraper スカイスクレイパー
        (125, 125),    # IMU (削除)Square Button スクエア・ボタン、ボタン
        (234, 60),     # IMU (削除)Half Banner ハーフバナー
        (240, 400),    # IMU (削除)Vertical Rectangle 縦レクタングル
        (250, 250),    # IMU (削除)Square Pop-Up スクエア
        (300, 100),    # IMU (削除)3:1 Rectangle 3:1レクタングル
        (336, 280),    # IMU (削除)Large Rectangle ラージ・レクタングル、レクタングル(大)
        (468, 60),     # IMU (削除)Full Banner バナー、フルバナー
        (720, 300),    # IMU (削除)Pop-Under ポップ・アンダー
        (200, 200),    # Google スクエア(小)
        (970, 90),     # Google ラージ ビッグバナー、ビッグバナー(大)
        (320, 50),     # Google モバイル ビッグバナー
        (320, 100),    # Google モバイル バナー(大)
        (240, 400),    # Google 「レクタングル(縦長)」ロシア
        (980, 120),    # Google 「パノラマ」スウェーデンとフィンランド
        (250, 360),    # Google 「トリプル ワイドスクリーン」スウェーデン
        (930, 180),    # Google 「トップバナー」デンマーク
        (580, 400),    # Google 「ネットボード」ノルウェー
        (750, 100),    # Google 「ビルボード」ポーランド
        (750, 200),    # Google 「ダブル ビルボード」ポーランド
        (750, 300),    # Google 「トリプル ビルボード」ポーランド
        (170, 40),     # banner 詳細不明
        (180, 70),     # banner 詳細不明
        (200, 40),     # banner 日本のCG系に多いバナーサイズだって
        (400, 40)      # banner 日本に多いバナーサイズだって
        )

    # 接頭辞(プレフィクス)を指定
    prefix = "wf-"

    # ファイルの拡張子を指定
    #extension = ".png"
    extension = ".jpg"

    # 描画色(RGB)を指定
    pen_color = (0x00, 0x00, 0xdd)

    # 画像の背景色(RGB)を指定
    bg_color = (0xdd, 0xdd, 0xdd)

    for screen in screens:
        print "size: %d,%d" % (screen[0], screen[1])
        make_image(screen, prefix, extension, pen_color, bg_color)
#EOF

↓こんな感じの画像がわらわらと作成されます。
wf-300x600.jpg

11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9