Python
PIL
画像

Webページから画像を取得し、リサイズを行う

今回、自分のメモ用に記載しています。
もし、参考になるのであれば皆さんも使用してみてください。

今回使用するソースコードは、「TomoProgの技術書」「Python, Pillowを使って画像を一括でリサイズ(拡大・縮小)する方法」を参考にさせていただきました。
より詳しい解説は、上記Webページに記載してありますのでご確認ください。

では、私が使用した環境と使用した感想を記載していきます。

開発環境

windows7
python 3.5
pycharm

画像取得のソースコード

import urllib.request
import bs4

# 取得したいwebページのURL
url = "https://www.google.co.jp/"
request = urllib.request.urlopen(url)
html = request.read()

# 文字コードのリストを作成
encoding_list = ["cp932", "utf-8", "utf_8", "euc_jp",
                 "euc_jis_2004", "euc_jisx0213", "shift_jis",
                 "shift_jis_2004", "shift_jisx0213", "iso2022jp",
                 "iso2022_jp_1", "iso2022_jp_2", "iso2022_jp_3",
                 "iso2022_jp_ext", "latin_1", "ascii"]

for enc in encoding_list:
    try:
        html.decode(enc)
        break
    except:
        enc = None

resources = []

# BeautifulSoupオブジェクトを作成
soup = bs4.BeautifulSoup(html)

# htmlのすべてのimgタグの中のsrc属性の内容を取得
for img_tag in soup.find_all("img"):
    src_str = img_tag.get("src")
    resources.append(src_str)

# srcの内容を表示
array_jpg = []
for resource in resources:
    array_jpg.append(resource)

# 画像ファイルのURLを開く
# (urlに画像ファイルのURLを指定)
count = 0
for number in range(0, len(array_jpg)):
    request = urllib.request.urlopen(array_jpg[number])

    # ファイルをバイナリモードで開き、URLの内容を書き込み
    # ファイル名は連番(例:0.jpg/1.jpg/......)
    f = open("%d.jpg" % (count), "wb")
    f.write(request.read())

    # ファイルを閉じる
    f.close()
    count += 1

画像リサイズのソースコード

#coding:utf-8

from PIL import Image
import os

input_path = "C:\\Users\\画像"
output_path = "C:\\Users\\画像_480x300"

# 画像フォルダの中のファイル名取得
list_input_path = os.listdir(input_path)

for number in range(0, len(list_input_path)):
    # 画像ファイルを開く
    img = Image.open(input_path + "/" + list_input_path[number], 'r')

    # img.resize((480, 300), Image.LANCZOS)は、リサイズするサイズの設定、フィルタの設定
    img_resize_lanczos = img.resize((480, 300), Image.LANCZOS)
    img_resize_lanczos = img_resize_lanczos.convert("RGB")
    # リサイズした画像の保存
    img_resize_lanczos.save(output_path + "/" + list_input_path[number], quality = 100)

使用してみての感想

上記webサイトでは、解説が丁寧に書かれており重複で調べることなどは無かったです。
とても良くまとめられているサイトでした。

皆さんも、機械学習をやってみたいと思ったときに、何かしらのデータが必要になると思います。
そんな時、こういった知識があれば、すぐデータが集められ、機械学習に取り掛かる事ができます。
私もこのソースコードを使って多くの画像を集めましたので、機械学習に利用していきたいと思います。
画像の著作権等は気をつけてくださいね。