bing_image_downloader ライブラリで写真をダウンロードする
pip install bing-image-downloader
from bing_image_downloader import downloader
# 現在のパスで「猫」フォルダを作成し、猫の写真10枚をダウンロードします。
# 「(~)」は現在の経路のことです。
downloader.download('ねこ', limit=10, output_dir='./', adult_filter_off=True, force_replace=False)
写真を編集する
from PIL import Image
# 画像を読み込みます。
img = Image.open('image.png')
# 画像を表示します。
img.show()
# 画像の複数の情報を確認します。
print(img.format) # ファイル形式
print(img.size) # 大きさ
print(img.width) # 幅
print(img.height) # 縦

from PIL import Image
img = Image.open('image.png')
# .jpgで保存します。
img.save('image.jpg')
from PIL import Image
img = Image.open('image.png')
# resizeに横と縦のサイズを入力してサイズを切り替えます。
img_resized = img.resize((300,300))
img_resized.save('image_resized.png')
ロットで回転します。
from PIL import Image
img = Image.open('image.png')
# プラスなら反時計回りに回転し、マイナスなら反時計回りに回転します。
img_rotated = img.rotate(90)
img_rotated.show()
from PIL import Image
img = Image.open('image.png')
img_flipped = img.transpose(Image.FLIP_TOP_BOTTOM)
img_flipped.show()

from PIL import Image
img = Image.open('image.png')
img_gray = img.convert('L')
img_gray.show()

透かし入れ
from PIL import Image, ImageDraw, ImageFont
img = Image.open('image.png')
# 画像を描画します。
draw = ImageDraw.Draw(img)
# フォントの種類とサイズを決めます。
# C:\\\\Windows\\\\Fontsにフォントがあります。
font = ImageFont.truetype(r'C:\\\\Windows\\\\Fonts\\\\MALGUN.TTF', 30)
# 文字を決めます。
text ='パイソンコーディング'
# 座標でどこに文字を書くかを決めます。
# 左上が基準です。
# 右に行くほどx座標値が大きくなり、下に行くほどy座標値が大きくなります。
# (10、10)なら右に10ぐらい下に10ぐらい離れたところに字を書きます。
# fillに色を決めます。
# fill=(255、0、0)のようにRGB値で定めることができます。
draw.text((10, 10), text, fill='red', font=font)
img.show()

from PIL import Image, ImageDraw, ImageFont
img = Image.open('image.png')
draw = ImageDraw.Draw(img)
font = ImageFont.truetype(r'C:\\\\Windows\\\\Fonts\\\\MALGUN。TTF', 30)
text ='パイソンコーディング'
# 画像のサイズを確認します。
width, height = img.size
# 文字の大きさを求めます。
# getbboxで文字の左、上、右、下の座標を求めます。
# 右から左の座標を引くと、文字の横の大きさになります。
# 下側から上側の座標を引くと、文字の縦の大きさになります。
left, top, right, bottom = font.getbbox(text)
width_text, height_text = right - left, bottom - top
# 文字の右側と下に30だけスペースをもっと置きます。
margin = 30
x = width - width_text - margin
y = height - height_text - margin
draw.text((x, y), text, fill='red', font=font)
img.show()
import os
from PIL import Image, ImageDraw, ImageFont
# 画像ファイル名を保存するリストを作成します。
img_list = []
# 現在のパスでフォルダーとファイルの両方を確認します。
all_list = os.listdir()
for item in all_list:
# ファイルが.jpgや.pngで終わったらimg_listに追加します。
if item.endswith('.jpg') or item.endswith('.png'):
img_list.append(item)
for item in img_list:
img = Image.open(item)
draw = ImageDraw.Draw(img)
font = ImageFont.truetype(r'C:\\\\Windows\\\\Fonts\\\\MALGUN.TTF', 30)
width, height = img.size
# 文字を決めます。
# [.] でファイル名を分けたときに、最初を選択します。
text = item.split('.')[0]
left, top, right, bottom = font.getbbox(text)
width_text, height_text = right - left, bottom - top
margin = 30
x = width - width_text - margin
y = height - height_text - margin
draw.text((x, y), text, fill='red', font=font)
# ファイル名_ウォーターマーク。pngで保存します。
img.save(f'{text}_ウォーターマーク.png')