2011年02月28日

smarty

Pythonchallenge 7 【smarty】
ネタバレ注意





























































































問題ページの画像の中央部に帯が



おそらくこの帯の部分のピクセル値を文字に直していけばいいんじゃないかなと予測した



画像をPythonで扱うPython Image Library(PIL)のubuntuでのインストールは以下のコマンド



$ sudo apt-get install python-imaging





PILの扱い方自体は上記のURL先に詳しく書いてある




あとはいつも通りピクセル値として得られた数字を文字コードとして見れば文字が得られた


import Image

im = Image.open("oxygen.png")
b_height = im.size[1]/2
x = 0
tmp = im.getpixel((x,b_height))
word =''
flag = False

while True:
tmp = im.getpixel((x,b_height))
x += 1
if not tmp[0] == tmp[1] == tmp[2]:
break

for i in range(0,x,7):
pixel = im.getpixel((i,b_height))
word += chr(pixel[0])
tmp = pixel[0]

print word
start = word.find('[') + 1
end = word.find(']')

next = word[start:end]
new_word = next.split(', ')
print new_word

words = ''
for i in new_word:
words += chr(int(i))

print words



----------
import Image

Image.open(x) returns y
画像ファイルxをPILオブジェクトyとして返す

im.size[0 or 1] returns a,b
PILオブジェクトimの画像サイズの幅aと高さbをタプルで整数として返す

im.getpixel((x,y)) returns r,g,b
PILオブジェクトimの画像の座標x,yのピクセル値のR値rとG値gとB値bをタプルで整数として返す
----------
chr(x) returns y
文字コードxの文字yを返す

x.find(y) returns z
文字列xに文字列yが文字列xの左から何番目にあるか整数zで返す(ない場合は-1を返す)

x.split(y) returns z
文字列xを文字列yで分割し、分割された文字列のそれぞれの文字列要素をリストzとして返す


ここにきて初めて褒められたw

 





この記事へのコメント

name:

mail:

HP:

comment:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/188283923

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。