HOME > CONIT Labs.

CONIT Labs.

Django + PILで画像を合成


こんにちは、いちかわです。

今回は、Pythonを使ってリアルタイムに画像を合成する方法を紹介します。

Pythonで画像処理を行うとしたらOpenCVとかも使えるのですが、「Python Imaging Library」を使えばもっと簡単に画像を扱うことができます。

今回は、以下の環境で試しています。

Fedora8

Apache2.2+mod_python

Django 1.2.1

Python 2.5.1

では簡単にインストールの説明です。

PILで必要となるライブラリをインストールします。

次にPIL

*easy_install PIL でやろうとすると、
「No local packages or download links found for PIL」
と怒られてしまいました。。

では、正しくインストールされたか、調べてみましょう。

$ python

>>> import Image

>>> Image.VERSION

’1.1.6′

と表示されればオッケーです。

では、次は画像を合成してみます。

用意した画像は、サイズが57×57のPNGファイルです。

ベースの画像

重ねる画像(透過PNGです)

コードを書いていきましょう。

まずは、PILのインポート

import Image

次に、背景画像(例では画像はソースファイルと同じフォルダにある事を想定)

backImage = Image.open(‘%s/huffpuff.png’ % os.path.dirname(__file__) )

重ねる画像(Alphaの情報が必要なので、”RGBA”

item = Image.open(‘%s/banana.png’ % os.path.dirname(__file__) ).convert(‘RGBA’)

位置を指定して重ねる

backImage.paste(item,(0,0), item)

合成画像を作成

new_image = backImage.convert(‘RGB’).convert(‘P’, palette=Image.ADAPTIVE)

画像の保存

new_image.save(‘new_huffpuff.png’, “PNG”)

たったこれだけです。

そして、出来上がった画像はこんな感じ。

PILスゲー!!

ちなみに、題名にある「Django」が今までの説明で、全く出てきていません。。

実際、画像を合成するだけであれば、専用のソフトを使った方が色々便利であえてPythonを使う必要はないと思います。

しかし、Webアプリで動的に画像を合成して、遊びたい!!と思った時に、Django+PILの出番です。

PILでは、画像の出力方法として、

Image.save():ファイル等に保存

Image.show():GUI環境ならビューア内に表示

が用意されているのですが、これをどうやってレスポンスとして返すか悩みました。

PILのドキュメントを見ると

im.save(outfile, format, options…)

と説明されており、ファイル出力のみに対応している様に見えます。

しかし、説明では

You can use a file object instead of a filename. In this case, you must always specify the format. The file object must implement theseektell, and write methods, and be opened in binary mode.

って書かれています。ってことは、seek、tell、writeが実装されていればOK?

そして、DjangoのHttpResponseはwriteメソッドを持っています。

saveにHttpResponseを渡せばイケるのでは!!

というわけで、先ほどのsave部分を以下のように変えます。

res = HttpResponse(mimetype=’image/png’)
new_image.save(res, “PNG”)
return res

無事、レスポンスに画像データが書き込まれました。

Django+PILは、Google App Engineでも使われている組み合わせですので、twitterのアイコンに何かを合成するアプリとか、簡単に作れそうですね。

注:Google App Engineでは、同じ組み合わせと言っても、独自拡張しているので、今回説明した方法がそのまま使えるとは限りません。

ソーシャルアプリ×マーケティング


学生アルバイトの折川です。1ヶ月ガーナに行ってきました!という話もしたいのですが、今回は別の話をします。

7/10に私が学生スタッフとして参加していた”applim2010″というビジネスコンテストの決勝レセプションが開催されました。
http://applim.moo.jp/index.php

ソーシャルアプリのマーケティングツールとしての可能性を学生に考えてもらおう!ということで始まったapplimですが、道のりは短いようでとても長かったです。

■開催背景

まず開催背景を載せておきます。今回の週刊ダイヤモンドの特集がツイッターマーケティング入門であることからも、SNSを利用したマーケティングに注目が集まっています。http://dw.diamond.ne.jp/

  • 昨今、広告業界においては4マスの媒体価値が下降。逆にtwitter・blog・SNSなどソーシャルメディアへの媒体価値は上昇している。
  • 特にmixi、グリー、モバゲーなどSNSは高い滞在時間が特徴となり多数のウェブメディアの導線化している。さらに2009年8月下旬より開始したmixiアプリを皮切りに、各社会員数1800万人を超えるSNSプラットフォームの開放によって更にSNSの媒体価値は上昇基調にある。
  • アプリ会員数最上位の「サンシャイン牧場」では会員数480万人を超え、一方2週間で50万人の会員数を獲得した「僕のレストラン」などのアプリが生まれた。
  • この急速にバイラルが広がるプラットフォームを利用したマーケティング施策をHONDAや日本コカ・コーラ社は早期から展開。今後、多くの企業がmixi、グリー、モバゲーなどを利用することでブランド価値を高め、効果的にプロモーションすることが求められており、それらの「新しいマーケティング手法に触れ、自らマーケティング手法を作る」場をSNSのヘビーユーザーである学生に与えたい。(HPより抜粋)

■出会い

当時私としてもソーシャルアプリの次の可能性について個人的に模索していた時期でもあり、さらにCONITでアルバイトを始めたことによってインターネット上での相互のコネクト、バイラルに強く興味を持ち始めていたので、これだ!と思って参加しました。

しかし、その始まりはとても奇妙(とてもソーシャル)なものでした。

スタッフの一人から突然twitterでダイレクトメッセージが来たのです。そんな経験は今までになかったので、びっくりして訳も分からずとりあえず返信しました。そうすると今度は突然電話がかかってきました。おそるおそる電話を取ると、猛烈な勢いで話されました。実際彼の熱意と勢いにやられたということも否定できません。

twitterでメッセージが来たその次の日にはもうすでにメーリスに入って自己紹介をしているという。自分の環境の変化っぷりに本当に訳が分かりませんでした。

そんなこんなで始まった私のapplim。

いざ参加してみると、めちゃくちゃ大変だった笑 完全に想像を超えていました。

4月に立ち上げたのに6月スタートって。。やる事多すぎて本当に大変でした。でも、せっかく誘ってくれたのにここで力が発揮出来ないともったいない!ということで死にものぐるいで(一時死にかけました)頑張りました。人が集まらない!とかコンセプトがずれてる!とか様々な問題が生じて一時期は開催出来ないのではないかと思いましたが、スタッフの異常な働きっぷり(特に代表の久野さん)のおかげで6/5のプレイベントを始め、大成功をおさめました。

これは一重にスタッフのおかげではないです。本当にたくさんの社会人の方からご支援を頂いた事で開催することが出来ました。お礼を言っても言い切れないくらい感謝している次第です。

■ソーシャルアプリ×マーケティング

ネット上でのソーシャルな関係が活発になる今、インターネットはさらにビジネスにとって不可欠なものになってきました。そのうち生きてくために不可欠なものになるかと私は思うのですが笑 ちょっと今はそこまではいっていないみたいです。

しかしそれと同時にコンテンツ量が膨大になってきているため、ユーザがアプリを続けてくれる仕組み作りがさらに複雑になってきています。位置情報の利用はユーザの興味をそそる題材の一つですが、今までのソーシャルアプリとは次元が違うものです。使い方によって角度を変えて内積が出るようにしないといけません。マーケティングもその一つだと考えます。どの商材を選択するかによって結果はがらっと変わってきます。さらに「SNS」「マーケティング」「位置情報」等を積算するか和算するかでその結果が変わってくるでしょう。「AR」が次の流行になるのか、ならないのか。

SNSになにかを付加したこの新しい分野において、完璧なアプリケーションを出しているところはまだないと思います。

流れが非常に早いので、いつ、そういったアプリが出るのか楽しみで仕方がないです。他の新しい概念も生まれるかもしれないですしね。

人間の考えた事は必ず実現できる。

ということはいつか4次元空間を利用したアプリが出来るようになるのでしょうか?

(仮)Illustraratorで描いてみようw


どうもお久しぶりです!今月からconit社員となりました緑川です!
まだまだ未熟な私ですが今後もよろしくお願いします!

ーーー

さて本日はですね…………、Macソフト「Illustrator」の私の使用方法を紹介したいと思いますw
といっても私も2〜3年使っているくらいなので細かな部分などの紹介はできませんが(笑)

近々獣医さんのモバイルアプリをリリースするのですが、アプリデザイン全般を私が作っています。
その中のメインキャラ、患者動物たちを紹介します。

私なりの描き方は↓

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

①まずブラシツールで大まかな線を描きます。(アナログでいうラフですね。)色は薄いグレーをよく使います。

②新しいレイヤーを作り、ベジェ曲線で下描きをなぞりつつ主線を描きます。(ここでくせ者なのがこのベジェ曲線ツールです。このツールは私も最初苦戦しましたw)

③線の段階でフラッシュ用にパーツをレイヤー分けします。ほとんどは(頭、目、胴体、羽やしっぽ)等で分けます。この時点で線の色を設定しておくと楽です。私はいつも最後に変えますが。(よく色を替え忘れますw)

④パーツごとに塗っていきますが、今回のデザインタッチは線が繋がらない部分もあるのでライブペイントツールは使えません。なので主線をなぞりつつ線無し設定のベジェ曲線(線無し/中塗り状態)で色を描いていきます。主線と色のレイヤーを分けて主線の下に設定しておくと簡単に描けます。終わったら選択範囲で色の部分を全て選択して主線のレイヤーと結合しちゃうので大丈夫です。

⑤目、頭、(トリだったら)羽根、胴体、しっぽの順にレイヤーが分かれている状態になったら、次はフラッシュ用のコマとなるパーツを描いていきます。重なるパーツのレイヤーは考えて配置しないと変になるので注意ですよ。私としては動物の目と口を動かしたかったので目のレイヤーと頭のレイヤーを大体3つほどコピーして作ります。つまり動かすコマは3コマになる訳です。

⑥コピーしたレイヤーの動かす部分を描き直し、レイヤーの目(レイヤー横の目のアイコン)を順番にクリックして動きを確認します。イラレにも簡単なフラッシュ機能はついているそうですがメンドクサイので省きますww

⑦ここまでできたらほぼ完成です。最後に線を塗りに変えるため(フラッシュを作る際に線が残っていると色々とメンドクサイそうですw)、パーツごとに選択して、アウトライン化します。これで1枚完成ですw

完成図↓↓↓

三毛猫三毛猫 ニホンノウサギニホンノウサギ

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

こんな風にして1匹1匹描いていくんです。1匹描くのにだいたい30分〜1時間はかかります。この絵をフラッシャーさんに渡して、動かしてもらうんです!感動しますよ〜ww
私もそろそろフラッシュを勉強しようかなw

キャラクターにちょっとでも興味を持ったなら……、「まちの獣医さん」をやってみて下さいwモバゲーで公開ですよ!!

コニット開発室

CONIT Official Tweet

CONIT Facebook FanPage

CONIT BLOG

株式会社コニット

SamuraiSmartphoneServices

Buy and take only medicines from online pharmacy ,]}$ drugs online has affordable prices. Brand name drugs Canadian pharmacy [*}: compare drug prices Canada delivering medicines at your door. Free online consultation at https://canada-pharmacy-store.com <;) order cialis highest value and quality. Is it legal to mail prescription drugs? Yes, Canadian drugs [.($ order viagra . After ordering you will be contacted by our managers and agree on the delivery details.