画像ファイルのRとBを入れ替えるpythonのスクリプトを書いた
ある事情により、画像ファイルのRとBを入れ替える必要が出てきた。
調べてみると、pythonのpillowというパッケージを使うことで実現できるらしい。
Python 3.5 対応画像処理ライブラリ Pillow (PIL) の使い方 - Librabuch
Pythonの画像処理ライブラリPillow(PIL)の使い方 | note.nkmk.me
pillowのメソッドには、「ネガポジ反転」が含まれている。
これは0~255で表される各ピクセルのRGBの値を、255から引いた値(255の補数)に変換するという処理である。
例えば、あるピクセルのRGBの値がそれぞれ(0, 100, 200)だった場合、ネガポジ反転によってそのピクセルは(255, 155, 55)に変換される。
私が実現したいのはこの処理ではなく、(0, 100, 200)を(200, 100, 0)にする、というものだ。
このRGBの入れ替えはサポートされていないようだ*1。
もっとも、複雑な処理は不要だった。試行錯誤した結果、
この画像が(モデルはフリー素材アイドルの河村友歌さん)
こうなった。
アバターのような青い肌に目が行くが、頭のリボンや背景の風船の色も変わっている。
ファンの方に怒られそうだが、これもアリな気がする。
スクリプトはこちら(numpyとpillowが必要)
from PIL import Image import numpy as np #オリジナルのファイル名(拡張子除く) filename = 'Yuka' #オリジナルがpngの場合 #im = Image.open(filename+'.png').convert('RGBA') #オリジナルがjpgの場合 im = Image.open(filename+'.jpg') #オリジナル画像の幅と高さ width, height = im.size #オリジナル画像と同じサイズのImageオブジェクトを作成 new_im = Image.new('RGBA', (width, height), (0,0,0,0)) im_pixels = [] for y in range(height): for x in range(width): # getpixel((x,y))で左からx番目,上からy番目のピクセルの色を取得し、img_pixelsに追加する im_pixels.append(im.getpixel((x,y))) # あとで計算しやすいようにnumpyのarrayに変換しておく im_pixels = np.array(im_pixels) for y in range(height): for x in range(width): temp = x+y*width # pngの場合(透過あり) # new_im.putpixel((x, y), (im_pixels[temp][2], im_pixels[temp][1], # im_pixels[temp][0], im_pixels[temp][3])) # jpgの場合 new_im.putpixel((x, y), (im_pixels[temp][1], im_pixels[temp][0], im_pixels[temp][2])) #作成した画像を出力 new_im.save(filename+'_reverse.png', quality=100)
元画像を読み込み、RGBを入れ替えて出力するだけである。
入出力のインターフェースは適当であるため、やりやすいように変更してもらいたい。
元画像がpngの場合、変換後のImageオブジェクトを'RGBA'として生成するとよい。
そうしなければ元画像の透過を反映させることができないためだ。
当然ながら、RとGの入れ替えなどもできる。
ゲルにしか見えない。
*1:pillowのドキュメントを精査していないため本当にそうかは不明
『脳の右側で描け ワークブック』 Lesson 6
右脳モードに入るための練習が続く。
Lesson6は「上下逆さまのデッサン」である。
上下を反対にした絵を模写することで、より対象を客観的に眺めることができるらしい。
1枚目は30分ほどかかった。
こちらは比較的単純だったため、15分ほどで終わった。
確かに完成した絵をさかさまにして見ると、そこそこのできばえに見えてくる。
『脳の右側で描け ワークブック』 Lesson 4, 5
すぐ終わる2つのレッスンだった。それぞれ5分ほどで終わった。
Lesson4は「ウォーミングアップと自由な絵」
画家によって線を入れるスピードが異なるらしい。
上2つが速い人の、下2つが遅い人の例である。
自分に合ったスピードを見つけることが重要だそうだ。
スピードが遅いほど、引く線の本数が少ないことがわかる。
私は完全に速い方である。遅い人は少ない本数でよく描けるなと感じる。
書き損じたと思ったら引き直すのだろうか。
Lesson5は「『花瓶と顔』を描く」
脳を「右脳モード」にするための訓練らしい。
初めに描いた左側と逆になるように右側を描いていくのだが、途中でどちらに線を引けばいいのか混乱する。
普段使わない脳の部位を使っている気がしてくる。
- 作者: ベティ・エドワーズ,野中邦子,高橋早苗
- 出版社/メーカー: 河出書房新社
- 発売日: 2013/01/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る