見出し画像

大量の画像を一括でリサイズ&透かし入れができるツールの作り方

こんにちは!あずさです。
生成AIとプログラミングを活用して、主に皆さまの副業を応援する自動化ツールを作っています。

今回はWebツールとして公開している画像のリサイズと透かし入れができるツールのローカル版を作りました。(Webツール版は無料で使えます!)

実際の挙動

所定のフォーマットのコマンドを実行すれば

画像のリサイズと透かし入れができます。入れられる透かしは左上に任意の文字列と、真ん中の「SAMPLE」の2つです。

コマンドは付属のエクセルシートで簡単に作れます。作ったコマンドはまとめて一括実行できるので、大量の画像を一括でリサイズ・透かし入れ処理ができます。

Webツールは便利だが自動化できない

Webツールはインストール不要でかつ基本的にGUIアプリ(一般的なボタンをクリックして操作するアプリ)なので気軽に・直感的に、特にササっと画像1枚だけ処理したいときなんかにはとても便利ですが、たくさんの画像を処理したいときは

「画像をセットして、、、仕様を選んで、、、アップロードボタンを押して、、、処理された画像を保存して、、、次の画像をセットして、、、」

というパソコンの前にずっと座って操作をし続ける必要があり、大量の画像を処理するなど、効率化・自動化には向きません。

こちらのローカル版はCLI(コマンドラインインターフェース)アプリと言って、コマンドプロンプトという黒い画面にコマンドを入力することで実行します。

GUIアプリのようなわかりやすい操作画面がない代わりに、コマンドはExcelでまとめて作った後に一括実行できるので、大量の画像処理をワンクリックで行えます。ずっとパソコンの前に座ってなくていい、本当の自動化です。

「プログラミングよくわからない」「黒い画面怖い」という気持ちはわかりますが、この記事を見てくださっている皆様は動画編集やAI画像生成にチャレンジしたことがある方々だと思います。
そのような経験のある皆様ならCLIアプリを使いこなせると思いますし、Stable Diffusionをインストールできたレベルの人には丁寧すぎてクドいかもしれないくらい詳細な手順を解説しています。

一緒に本当の自動化を始めませんか?


必要な環境

まず私のPC環境は以下の通りです。ご自身のPCスペックと比べてご判断ください。

OS:Windows11 Home
CPU:AMD Ryzen 5 4600H
メモリ:16gb

また、Pythonがインストールされている必要があります。
以下のバージョンで動作を確認しています。

Python 3.10.6
Python 3.12.5

Pythonのインストールは以下の手順が参考になります。https://www.python.jp/install/windows/install.html

インストールが完了したら、コマンドプロンプト(windowsの検索窓で「cmd」と検索)で「Python」と入力してみて、バージョン情報が表示されれば完了です。(「Python」と入力するとPythonの対話モードが起動するので、バージョンが確認できたらコマンドプロンプトを閉じるか、「exit()」と入力して対話モードを抜けてください。)

付属のExcelシートはGoogleスプレッドシートでも開けます。

諸注意

■注意事項
この記事はあくまで作り方を指南する記事です。サンプルとしてそのまま実行できるスクリプトファイルを添付し、できるだけ再現性が高くなるよう丁寧に書いたら約8000字、画像42枚となった実行手順と解説を記載していますが、動作の保証や返金保証、サポート等はできません。(ですが、Python導入が完了していて、おそらく動画編集やAI画像生成の経験もお持ちの自己解決能力の高い皆さまなら、詰まることなくツールを構築できると思っています。また、コメント欄でのお問い合わせにはできる限りお答えします。)

■利用規約
ソースコードやその他添付物の転載、再配布・再販売、貸出・複数人での利用、譲渡、再利用(派生物の作成)等、作者が不利益を被る利用はお控え下さい。また、このツールに関連して生じたトラブル等の責任も負いません。
ツールを使って作った画像は好きに使ってください!

その他仕様

・入出力できる画像サイズと形式
明示的な制限は設けてませんが、16:9の8k(7,680×4,320)画像まで試したところ動作しました。

処理できることを確認した画像形式はpng, jpg, webpです。出力時はpngになります。

・出力までの時間
350dpiのA4サイズ(2894x4093)、余白なしリサイズ、SAMPLE透かしあり、左上透かしフォントサイズ指定ありで1枚3.7秒ほどでした。

上記いずれもPC環境によると思うので、私のPC環境と比較してご判断ください。

・できること
▶余白ありでのリサイズ

元画像が収まるように余白ありでリサイズします。

▶余白なしでのリサイズ

余白がなくなるように中央にズームしてリサイズします。

▶左上に任意の文字列の透かし入れ(文字色、縁取り色、フォントサイズ指定可)※改行、一部の特殊文字・全角記号に対応していないのでご注意ください。

フォントサイズ未指定の場合、これくらいの大きさに自動調整されます。
フォントサイズを指定することもできます。

▶中央に「SAMPLE」透かし入れ

※SAMPLE透かしは横幅に合わせて挿入されるので、極端に横幅の長い解像度だと上下が見切れます。(ウルトラワイドくらいまでは見切れないので実用に問題はないと思います。)

上記の処理は重ね掛けできます。

余白ありリサイズ+左上透かし+サンプル透かし
余白なしリサイズ+左上透かしフォントサイズ指定あり+サンプル透かし

■配布ファイルのダウンロードについて
note上のファイルは危険なファイルと誤判定されてしまいダウンロードができないことがあるようです。
危険なファイルと誤判定された場合でも、以下の方法でダウンロードが可能です。(同じくnoteで添付ファイルが危険と判定されてしまった人がダウンロード方法を解説してくれています。)

当然危険なものは入れてませんし、note側でもファイルのウイルス判定は行われているのでご安心ください。
一応ファイルの中身も以下に開示します。念のためお知らせでした。ご了承くださいませ。

readme.html: ドキュメントです。
requirements.txt: 必要なライブラリをインストールするためのテキストファイルです。
watermarker.py: メインのスクリプトです。
画像リサイズ&文字入れコマンド作成シート.xlsx: コマンドを作成するためのExcelシートです。
fonts: 付属のフォント(MPLUS)とそのドキュメントが格納されています。
my_modules: スクリプトの実行に必要な自作モジュールが格納されています。
top_images: 「SAMPLE」透かしの画像素材が格納されています。

Pythonの導入が完了し(完了している前提で話が進みます)、上記ご理解いただいた上で「挑戦したい!」と思ってくださる方は、ぜひ先へお進みください。一緒に頑張りましょう!
構築手順と基本的な実行手順を案内するので、実際に動かしてみるところから始めましょう。

ここから先は

8,004字 / 42画像 / 1ファイル

¥ 990

この記事が気に入ったらサポートをしてみませんか?