5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Tシャツ画像を自動生成する

Last updated at Posted at 2014-11-01

概要

mascotboyさんのTEE PARTYの、図案や文字の組み合わせでたくさんの似たような種類のTシャツが作られているのが面白いと思いました。

これを真似して、Rubyスクリプトで図案の配置・組み合わせによる画像生成を行ってTシャツを作ることを思いつきました。画像をアップロードするだけでTシャツが販売できるSUZURIを使って作ったTシャツはこちらです。

図案

犬の顔の数が違うだけの「2」、「3」、「4」がありますが、同じようなことを2進数で表現することを思いつきました。

拙作ゲームのキャラクターを使って、目を開けていたら"1"、閉じていたら"0"ということにして、こんな感じ:

0010.png

4つのロボットの顔で4ビット2進数を表現し、全16種類のTシャツを作りました。

方法

SUZURIへアップロードする素材はPNGかJPEGです。Tシャツ用画像のテンプレート(指定サイズの空画像)が用意されているので、そのサイズに収まる画像を作ってアップロードすればよいわけです。

このテンプレート画像にロボットの顔の画像を適宜配置していきます。画像合成にはImageMagickを使いました。画像を拡大したり、指定した位置に貼り付けたりできます。ループ処理とかビットの立っている桁を調べたりとかを、すべてシェルスクリプトでまかなうのには限界を感じたので、RubyでImageMagickを扱えるRMagickを利用しました。

スクリプトは以下です。(Gist)


require 'rubygems'
require 'rmagick'

# サイズなど定数
ICON_W = 32
ICON_H = 32
SCALE = 18
Y = 32 * SCALE
GAP = (2520 - ICON_W * SCALE * 4) / 3
W = ICON_W * SCALE
H = ICON_H * SCALE

# base_imageにobj_imageをi個ずれた位置に置く
def stamp(base_image, obj_image, i)
  return base_image.composite(obj_image, Magick::NorthWestGravity, i * (W + GAP), Y, Magick::OverCompositeOp)
end

# 顔画像読み込み、拡大
robot0 = Magick::Image.read('./robot0.png').first
robot1 = Magick::Image.read('./robot1.png').first
robot0.scale!(SCALE)
robot1.scale!(SCALE)

# テンプレート画像読み込み
base = Magick::Image.read('./suzuri-template-tshirts.png').first

# 0〜15まで作る
16.times do |i|
  image = base
  # 4桁分顔を置く
  4.times do |j|
    image = stamp(image, ((i & (8 >> j)) == 0) ? robot0 : robot1, j)
  end
  image.write('./out' + i.to_s + '.png')
end

おわりに

16枚の画像生成は自動化出来ましたが、SUZURIへの画像アップロードから販売開始までは手作業になるので面倒でした。Web APIがあったらいいな、と思いましたが、自動生成ゴミTシャツでサイトが埋め尽くされたりしそうですね。

今回は簡単な画像の配置の組み合わせをしただけですが、Adobeツールを使わないでできました。もっと複雑なこともできそうですね。

以上です。

5
4
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
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?