端末から画像を回転させる


34

たくさんの画像があるディレクトリを持っていますが、それらの向きが間違っています。画像を正しい方向に回転させたい(主に±90 o)。画像(ショットウェルフォト)ビューアーを使用して、回転ボタンをクリックして個別に回転できますが、これは面倒です。

私が見てman shotwellshotwell --help-allなく、コマンドラインから回転コマンドを起動する方法について説明は何もありません。

ターミナルからショットウェル(または他のビューア)の回転コマンドを呼び出す方法はありますか?または、画像を回転させる他の方法も歓迎します。


1
nautilusから必要な場合は、askubuntu.com / a / 432662/15811 ただし、必要な端末コマンドは、「imagemagick」から「変換」です
-Rinzwind

1
ロスレス回転が必要で、ファイルがjpegの場合は、jpegtranをご覧ください。imagemagickは(率直に言って)損失の多い回転を行います。
-Rmano

回答:


39

純粋なbash実装を探しているなら、ImageMagickのconvertコマンドがあなたが探しているものです:

for szFile in /path/*.png
do 
    convert "$szFile" -rotate 90 /tmp/"$(basename "$szFile")" ; 
done

上記では、既存のファイルをそのまま残し、新しく回転したファイルをコピーして、/tmp他の場所に移動またはコピーしたり、変換後および検証後に既存のファイルを置き換えることもできます。

(そして、それは標準ソフトウェアであるため、Ubuntuのすべての最近のリリースで動作します)


28
for file in *.JPG; do convert $file -rotate 90 rotated-$file; done

これにより、ファイルのコピー、回転、および名前変更が行われます。

元のファイルをそのまま残したい場合は、この方法がうまくいくかもしれません...

これは大文字と小文字が区別されることに注意してください。ファイルの名前が* .jpgの場合は、それに応じて小文字(または* .png ...)に置き換えます。


4

インプレースで上書きしたい場合mogrify、ImageMagickスイートからこれを達成する最も簡単な方法のようです:

# counterclockwise:
mogrify -rotate -90 *.jpg

# clockwise:
mogrify -rotate 90 *.jpg

CAVEAT:これは、JPEGファイルのためのロスレス回転法ではありません、https://www.imagemagick.org/discourse-server/viewtopic.php?t=5899jpegtranこれを実現します(テストなし):

# counterclockwise
ls *.jpg | xargs -n 1 jpegtran -perfect -rotate 270

# clockwise
ls *.jpg | xargs -n 1 jpegtran -perfect -rotate 90

完全に動作します
ポールジョーンズ

Mogrifyは、シンプルで迅速なバッチ画像編集に関してはスイスのナイフです
EA304GT

ベストアンサー、これをインプレースで実行したくないのはなぜですか?
mLstudent33

1
@ mLstudent33:いい質問です。mogrifyJPEGファイルでは無損失ではないようですが、そうjpegtranです。
krlmlr

3

以下にその方法を示します。

  1. gThumbをインストールする

    sudo apt-get install gthumb
  2. nautilusを開き、画像ディレクトリに移動します。いずれかを右クリックしてを選択しますOpen with -> gthumb

  3. 下にviewメニューを選択Browserまたはを押しEscキーを。これにより、ディレクトリブラウザが開き、すべての画像が表示されます。

    ここに画像の説明を入力してください

  4. を押してCtrl、回転する画像を選択するか、Ctrl+ を使用してすべてを選択しますA

  5. ツールバーで、選択してToolsから、Rotate RightまたはRotate Left好みに応じて。

    ここに画像の説明を入力してください


0

素敵な解決策は、バックアップ(たとえば、接頭辞のセットを作ることですbackup-、)新しいファイル(接頭辞などのセットを生成元のファイルを回転させるrotated-)、あなたのセットを与えます

  • img-1.png
  • backup-img-1.png
  • rotated-img-1.png
  • img-2.png
  • ...等々

mv/ cpツールだけ離れてそれらを取るために、それの厄介をプレフィックスを追加することができます[bashはグロブ](それはパラメータ展開、ewwwを...使用すると思います)

このrenameツールを使用するとs/before/after/、(sedツールの)置換構文を使用してそのセーフガードプレフィックスを交換し、元のファイルを上書きできるため、特定の画像セットimg-{1..n}の全体的なプロセス.pngは次のようになります。

for imgf in img-*.png; do mv "$imgf" "backup-$imgf"; done
for imgf in backup-img-*.png; do convert "$imgf" -rotate 90 "rotated-$imgf"; done

注意:

  • を使用するcp代わりにを使用することもできますがmv、元のコピーが2つあります(欠点は、プレフィックスの連結 " rotated-backup-..." が得られることです)
  • 回転は時計回りです(-rotate 27090°反時計回りになります)
  • 進行状況を追跡するには、echo "Rotating ${imgf#backup-} ... ";after convert呼び出しを追加します(前にdone
  • よりコンパクトな形式(たとえば、一連の番号付きファイル)の場合は、echo "$(echo ${imgf#backup-img-} | cut -d\. -f 1)...";代わりに次の ようなパラメータ拡張を使用します

    (同じbash param拡張で接頭辞と接尾辞を削除できないため、使用しますcut

確認後、混乱していないことを確認してから、元に戻すことで画像を削除します

rename 's/^rotated-//;' rotated-*
rm backup-img-*

0

このコードをコピーして貼り付け、名前を付けて保存できます rotate.sh

#!/bin/bash -e

CUR_DIR=$(pwd)
cd $1
for file in *.jpg
do
    convert $file -rotate 90 $file
done
cd $CUR_DIR

このファイルを保存した後、を使用してターミナルから実行し./rotate.sh folder_containing_imagesます。


コードとリンクを確認してください!
ジョージウドセン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.