2019年5月25日土曜日

Dockerでpython3.7とPillowをインストールしたコンテナ(Alpine3.9ベース)を作成する

Pillowを使用して、画像の生成や変換などを行うことができます。

以下のコマンドとDockerfileを使用してpython3.7とPillowがインストールされたイメージを作成する事ができます。
docker build -t pythonpillow:1.0 .

Dockerfile
FROM python:3.7-alpine3.9
RUN apk --no-cache add \
    libjpeg-turbo \
  && apk --no-cache --virtual pydeps add gcc \
    g++ \
    python3-dev \
    musl-dev \
    cython \
    jpeg-dev \
    zlib-dev \
  && pip install pillow \
  && apk del --purge pydeps

以下のコマンドでサンプルコードを実行して、読み込んだ画像をセピア調に変換します。
docker run -v `pwd`:/tmp --rm -it pythonpillow:1.0 /usr/local/bin/python3 /tmp/test.py

test.py
# coding=UTF-8
from PIL import Image
from PIL import ImageOps

# 画像をセピア調に変換する
img1 = Image.open("/tmp/sf2.jpg")
for ly in range(img1.size[1]):
        for lx in range(img1.size[0]):
                pv = img1.getpixel((lx, ly))
                pv2 = (pv[0]+pv[1]+pv[2])/3
                pr = int(pv2 *0xd0/0xff)
                pg = int(pv2 *0xa0/0xff)
                pb = int(pv2 *0x50/0xff)
                img1.putpixel((lx,ly), (pr,pg,pb))
img1.save("/tmp/pythonpillow.png")

入力画像(sf2.jpg)


出力画像(pythonpillow.png)


0 件のコメント:

コメントを投稿