記事のディレクトリ
前書き
PIL:Python Imaging Libraryは、すでにPythonプラットフォームの事実上の画像処理標準ライブラリです。PIL関数は非常に強力ですが、APIは非常にシンプルで使いやすいです。PILはPython2.7のみをサポートし、長い間荒廃していたため、ボランティアのグループがPILに基づいて互換性のあるバージョンを作成しました。Pillowという名前で、最新のPython 3.xをサポートし、多くの新機能を追加しました。 Pillowを直接インストールして使用できます。
1つは、Pillowをインストールする
Anacondaがインストールされている場合、Pillowはすでに使用可能です。それ以外の場合は、コマンドラインからpipを介してインストールする必要があります。
私はAnaconda + pycharmを使用していますが、インストールは次のように表示されます。
(base) C:\Users\admin>activate tf-gpu # 激活当前使用的虚拟环境
(tf-gpu) C:\Users\admin>pip install pillow # 安装
Requirement already satisfied: pillow in d:\softwares\anaconda3\envs\tf-gpu\lib\site-packages (8.0.1)
第二に、操作イメージ
最も一般的な画像ズーム操作には、3行または4行のコードのみが必要です。
from PIL import Image
# 打开一个jpg图像文件,注意是当前路径:
im = Image.open('test.jpg')
# 获得图像尺寸:
w, h = im.size
print('Original image size: %sx%s' % (w, h))
# 缩放到50%:
im.thumbnail((w//2, h//2))
print('Resize image to: %sx%s' % (w//2, h//2))
# 把缩放后的图像用jpeg格式保存:
im.save('thumbnail.jpg', 'jpeg')
スライス、回転、フィルター、出力テキスト、パレットなどの他の機能はすべて利用できます。
ぼかし効果には、数行のコードしか必要ありません。
from PIL import Image, ImageFilter
# 打开一个jpg图像文件,注意是当前路径:
im = Image.open('test.jpg')
# 应用模糊滤镜:
im2 = im.filter(ImageFilter.BLUR)
im2.save('blur.jpg', 'jpeg')
PILのImageDrawは一連の描画方法を提供し、直接描画できるようにします。たとえば、文字確認コード画像を生成するには、次のようにします。
from PIL import Image, ImageDraw, ImageFont, ImageFilter
import random
# 随机字母:
def rndChar():
return chr(random.randint(65, 90))
# 随机颜色1:
def rndColor():
return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))
# 随机颜色2:
def rndColor2():
return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))
# 240 x 60:
width = 60 * 4
height = 60
image = Image.new('RGB', (width, height), (255, 255, 255))
# 创建Font对象:(字体)
font = ImageFont.truetype('arial.ttf', 36)
# 创建Draw对象:
draw = ImageDraw.Draw(image)
# 填充每个像素:
for x in range(width):
for y in range(height):
draw.point((x, y), fill=rndColor())
# 输出文字:
for t in range(4):
draw.text((60 * t + 10, 10), rndChar(), font=font, fill=rndColor2())
# 模糊:
image = image.filter(ImageFilter.BLUR)
image.save('code.jpg', 'jpeg')
背景をランダムな色で塗りつぶし、テキストを描画し、最後に画像をぼかして、次のように検証コードの画像を取得します。
画像を保存する関数を定義します(複数の画像を1つの画像に保存します)。
# 定义Image保存函数,将多张Image保存到一张Image里面去
def save_images(imgs,name):
news_im = Image.new('L',(280,280))
index = 0
# 将10张Image保存到一张Image里面去
for i in range(0,280,28):
for j in range(0,280,28):
im = imgs[index]
im = Image.fromarray(im,mode='L')
news_im.paste(im,(i,j))
index += 1
news_im.save(name)
三、上記の操作概要
Image.open(path)パス
の画像ファイルを開きますpath
im = Image.open(path)
w、h = im.size
は、画像インスタンスのサイズを取得します
im.thumbnail((w_new、h_new))
は、元の画像インスタンスを新しいサイズ(w_new、h_new)にスケーリングします。
im.save( 'thumbnail.jpg'、 'jpeg')
画像を保存します。画像名はthumbnail.jpg、形式は'jpeg'です。
im.filter(ImageFilter.BLUR)
ブラーフィルターを適用します
Image.new(mode、size、color = 0)
mode:https://pillow.readthedocs.io/en/stable/handbook/concepts.html#concept-modes
は、指定されたモードとサイズで新しい画像を作成します
Image.fromarray(obj、mode = None)
は、指定されたモードを使用して、配列オブジェクトを画像オブジェクトに変換します
obj –配列インターフェイス
モードのオブジェクト–使用するモード(Noneの場合はタイプから決定されます)
ImageFont.truetype(font = None、size = 10、index = 0、encoding = ''、layout_engine = None)
この関数は、指定されたファイルまたはファイルのようなオブジェクトからフォントオブジェクトを読み込み、指定されたサイズのフォントAフォント用に作成します。オブジェクト
フォント:フォントオブジェクト
サイズ:フォントサイズ
インデックス:ロードするフォント
参照: