dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

python でバイナリデータから Image オブジェクトを生成する方法

2019-06-22 16:29:15 | python
python でバイナリデータから Image オブジェクトを生成する方法のメモ。

import sys
import json
import pycurl
from PIL import Image
import io


def run():
    # 画像データを取得
    url = 'https://blogimg.goo.ne.jp/thumbnail/58/13/32c48f351e5c1d918cff81274a054dc7_s.jpg'

    buf = io.BytesIO()

    c = pycurl.Curl()
    c.setopt(c.URL, url)
    c.setopt(c.WRITEDATA, buf)
    c.perform()
    c.close()

    img_bytes = buf.getvalue()

    # 画像データから Image オブジェクトを生成
    inst = io.BytesIO(img_bytes)
    img = Image.open(inst)

    # 画像サイズを出力
    print(img.size)

    return 0

if __name__ == '__main__':
    res = run()
    exit(res)


python でバイナリデータを標準出力に出力する方法

2019-06-22 15:33:28 | python
python でバイナリデータを標準出力に出力する方法のメモ。

sys.stdout.buffer.write(bytes型のオブジェクト) で標準出力にバイナリデータを出力することができます。

以下は所定の URL の画像を取得して、標準出力に出力しています。
import sys
import pycurl
import io


def run():
    url = 'https://blogimg.goo.ne.jp/thumbnail/58/13/32c48f351e5c1d918cff81274a054dc7_s.jpg'

    buf = io.BytesIO()

    c = pycurl.Curl()
    c.setopt(c.URL, url)
    c.setopt(c.WRITEDATA, buf)
    c.perform()
    c.close()

    data = buf.getvalue()
    sys.stdout.buffer.write(data)

    return 0


if __name__ == '__main__':
    res = run()
    exit(res)