Skip to content

pythonで画像リサイズ&圧縮ツールを作ってみた。

プログラミングに興味を持っている人なら、最近、ジワジワと人気が上昇しているpythonという名のプログラミング言語のことを聞いたことがあるだろう。

ブログを書いていると、プログラムで自動化したい面倒な作業というのが少なからず出てくるものだ。僕の場合はブログに掲載する画像をリサイズ、圧縮するという作業が、日頃から面倒だと感じていた。そこで、pythonを使って便利ツールなるものを作ってみることにした。

スポンサードリンク

画像が重たいから・・

ブログに画像を張るのはいいが、ある程度データを小さくして置かないと、表示に時間がかかってしまう。だから、リサイズや圧縮して画像を張るわけだ。ところで、5Gが普及したらその辺の問題も解決されて、ブログでも高画質の写真をバンバン使えるようになるのだろうか?

今まで僕はウェブサービスを使い、リサイズ、圧縮作業を行っていた。作業の流れは次のような感じだ。


1. リサイズツールを提供してくれるウェブサービスでリサイズし、それをダウンロード。

2. 次に圧縮処理をするサービスに写真をアップロード。

3. 圧縮処理して、ダウンロード。

4. それをwardpressに取り込んで記事に張る。

ああ、面倒だ・・・

リサイズ処理を書く

僕がpythonという言語を選んだのは、こういった時にフットワークが軽いからだ。何かを思いついた時にコードを書いて実行テストをする。そこまでのリーチがとても短くて済む。

大げさな開発環境は必要ないし、pythonには「IDLE」というメモ帳にも似た小さな開発環境が最初からついている。プログラムの目的は、複数の写真を一括リサイズして、圧縮してくれればいい。

まずは、リサイズ処理を書いてみた。

def resize(image, resize_width):
    width = image.size[0]
    height = image.size[1]
    rate = resize_width / width
    resize_height = int(height * rate)
    image = image.resize((resize_width, resize_height))
    return image

画像データを受け取り、指定された幅に収まるように高さを計算している。そしてリサイズして返す。

圧縮処理を書く

次に圧縮処理を書く。

def compression(imagefile_path):
    image = imread(imagefile_path, cv2.IMREAD_COLOR)
    encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 90]
    result, encimg = cv2.imencode('.jpg', image, encode_param)
    return cv2.imdecode(encimg, 1)

OpenCVライブラリを使って圧縮する。

後は、画像ファイルを読み込んで、必要に応じてリサイズしたり、圧縮するコードを追加すればいい。

pythonに興味がある人へ

多分、pythonを触ってみたいと思っている人にとって、面倒なのはpythonの実行環境を作ることかもしれない。一回作ってしまえば終わりという話なんだが、僕も始める前は途轍もなく高い壁に感じていた。で、いざ始めてみると、またげる程度の段差に過ぎなかった。

また、全くプログラミングをしたことが無いというなら、pythonから始めるというのは、とてもいい選択だ。ほぼ、全ての分野をカバーしているし、人気もあり、調べたいことがあればネットに多くの情報が載っている。(ビギナー向けの情報に限られるが・・・)

独学プログラマー Python言語の基本から仕事のやり方まで
コーリー・アルソフ (著)

スポンサードリンク:Amazon

この記事をシェア

Comments are closed, but trackbacks and pingbacks are open.