3
10

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.

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

Posted at

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

今回使用するソースコードは、「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サイトでは、解説が丁寧に書かれており重複で調べることなどは無かったです。
とても良くまとめられているサイトでした。

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

3
10
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
3
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?