adbird(広告鳥) 備忘録

スマホ(Android)のTermuxでImageMagickを使って複数の画像を一括縮小


僕は通話専用のガラケーと、データ通信専用の格安スマホの2台持ちなのだが、スマホの通信プランは月1GB+前月までの残通信量(最大1GB)=ひと月、最大2GBという少ない通信量である。まあ、そのおかげでガラケースマホで合わせて月1,500円程度のコストなのだが。

それでも自宅ではWifiだし、外では動画などの大きい容量のデータのダウンロードや閲覧はしないようにしているので、前月の通信量が結構残ることが多く、特に困ることはない。

しかし、外出先でスマホで撮った写真をツイッターとかでアップロードしたいときもある。その日のうちに自宅に帰れるのなら、自宅に戻ってからアップすることもあるのだが、帰省中などWifiがない場合やすぐにアップしたいときに、少ない通信量しかない僕のプランではスマホの画像データの容量もバカにならない…。

そこで以前は、画像をリサイズできるアプリを使って、1枚ずつ縮小してからアップしていたのだが、これが結構手間だった。 とくに1回の投稿で複数枚の画像をアップするときなど。

複数の画像を一括で縮小できるアプリもあるっぽいみたいだったが、ふと、「スマホでも端末(ターミナル)開いて、Imagemagick の mogrify で一括縮小できないかなぁ」と思って調べたら、Termux というAndroidLinuxコマンドが使える端末アプリがあるじゃないですか!!

そして、ついに比較的簡単(?)に複数枚の画像を一括縮小する環境を作ることができた。

準備編

Termux インストール

  • Termuxをインストール。

起動すると、こんな感じ。

f:id:adbird:20181229133957p:plain
Temux

おぉ、端末(ターミナル)だ!
とりあえず、下記のことをすべし。

$ apt update
$ apt upgrade
$ termux-setup-storage

最後のコマンドで「アクセスを許可しますか?」と聞かれたら、許可をする。

tree インストール

端末で困るのは、現在の自分の場所がどこなのか、自分がいる場所はどんなフォルダ・ファイル構成になっているのがわかりづらいこと。

自分の場所を知るには下記コマンドで分かる。

$ pwd

自分がいる場所のフォルダ・ファイル構成は $ tree で分かる。

$ pkg install tree

でインストールして、

$ tree

で、フォルダ構造が表示される。
後述するように、ファイルの確認でも使う。

ImageMagick インストール

画像変換の定番といえばこれ。

$ pkg install imagemagick

スクリプトファイル resize.sh 作成・移動

スマホの小さい画面の端末でいちいち $ cd で画像の入っている目的のフォルダまで移動してから一括縮小のコマンドを打つ、なんてことはしたくない。
termux を開いて、すぐにコマンド一発で縮小できるようにしたい!ということでスクリプトファイルを作成。

以下をPC(Ubuntu)で resize.sh として作成。(Windowsの場合、文字コードUTF-8にしたほうがいいかも。) 今回は縮小サイズを50%とした。縮小割合はお好みで。

#!/data/data/com.termux/files/usr/bin/sh
cd ~/storage/pictures/画像リサイズ
mogrify -resize 50% *.jpg

ちなみに

  • 後述する「画像リサイズ」フォルダに移動して、
  • そのフォルダ内にある画像をすべて50%縮小する

というコマンドを並べている・

作成した resize.sh をグーグルドライブ経由(べつにグーグルドライブでなくてもいい。メールで添付とかでも。)でスマホにダウンロードしたら、「Downloads」フォルダにあるはずなので、termuxでダウンロードフォルダに移動。

$ cd ~/storage/downloads

resize.shがあるかを確認。

$ tree

resize.shがあったら、以下のようにresize.shを /bin フォルダにコピーして、実行権限を与える。

$ cp resize.sh $PREFIX/bin/resize.sh
$ chmod +x resize.sh

ホームに戻る。

$ cd

作業フォルダ(「画像リサイズ」) 作成

~/storage/pictures/ の場所が、スマホ内部のどこに当てられているかを確認。

$ tree

たぶん、「本体(内部) > Pictures」(/storage/emulated/0/Pictures)になっていると思う。

「本体(内部) > Pictures」内に移動して、「画像リサイズ」フォルダを作成、確認する。

$ cd ~/storage/pictures/
$ mkdir 画像リサイズ
$ tree -L 1

一応、スマホの適当なファイルマネージャーで「本体(内部) > Pictures」を開いて見たときと、上記の $ tree -L 1 で表示された構成と同じになっているか(「画像リサイズ」フォルダがあるか)を確認する。

これで準備終わり。一度、termuxを閉じるか、$ cd でホームに戻る。

実行編

画像を作業フォルダにコピー

スマホで撮った画像データを「画像リサイズ」フォルダにコピーする。

Yahoo!ファイルマネージャーが、目的のフォルダをスマホのホーム画面にショートカットとして置けるし、画面を2分割してドラッグ&ドロップできるし便利な感じ。

f:id:adbird:20181229125945p:plain

スクリプト実行

termuxを起動して、

$ resize.sh

とすれば、スクリプトが実行される。

実行中は何も表示されなくて不安になるけど、じっと待つw。

端末に再び「$」が表示されれば、「画像リサイズ」フォルダ内の画像が縮小されているはず。

僕の貧弱なスマホのスペックではわずか数枚の縮小にも結構、時間がかかった…。

あまり大量に一括縮小するのは時間がかかりすぎるので止めておいたほうがいいかも。