まず、これを読んで助けてくれてありがとう。アドバイスをいただければ幸いです。
Nautilus-Actionsを使用して、カスタムコンテキストメニューのアクションを追加して、JPGイメージのコピーを作成し、イメージのサイズを維持しながら品質(およびファイルサイズ)を削減します。
たとえば、2.3 MB(2 261 588バイト)のファイルサイズに関する画像のプロパティを含むこの画像と、
そして、GIMP 2.8でファイルを開いてコピーをエクスポートし、JPGエクスポートダイアログボックスを使用して、次のスクリーンショットに示すように画像の品質を30%に下げた後:
画像のコピーで次の画像のプロパティを取得します(251.8 kB(251 797バイト)ファイルサイズ):
Nautilusで多数のファイルを選択し、これらの選択したファイルのいずれかを右クリックして適切なNautilusアクションアクションを選択することにより、コンテキストメニューで同じ動作を再現するために、Nautilusアクションを使用して多くの画像をバッチ処理します。その結果、元の画像と同じサイズの画像を含むファイルが作成されますが、もちろん品質は低下し、ファイルサイズは少し大きくなります(275.3 kB(275 265バイト)ファイルサイズ)が、それは私にとって大きな問題ではありません。
複数の画像ファイルをバッチ処理しようとすると、最初のファイル名がそれぞれ異なる画像を含む複数のファイル名に複製されます。次の一連のコマンドで設定したプロパティで:
基本的に、各Nautilusアクションは次のパラメーターを使用しています。
コマンド:convert
パラメータ:%F.jpg -quality 80%% %F-80q.jpg
convert path/to/file1.mid.jpg -quality=80% path/to/file1.mid-80q.jpg
作業ディレクトリ:%d
そのため、結果は次のスクリーンショットで見ることができます。
ここでは、各ファイルが異なるファイルで処理されているのを見ることができますが、コピーされたファイルに新しい名前を割り当てるために最初のファイル名だけが使用されます。私は次のような結果を望みます:
File1.jpg === File1-80q.jpg
File2.jpg === File2-80q.jpg
File3.jpg === File3-80q.jpg
File4.jpg === File4-80q.jpg
等々...
Phatchを使用してこのようなタスクを実行しましたが、希望するのは、選択したファイルを右クリックし、1回のアクションで処理することです。
これを行うためのより良い方法はありますか?または...すでにやっていることを何らかの形で改善できますか?
ご支援ありがとうございました。
追伸 フォルダ構造を保持しながら画像を白黒にバッチ変換する方法 および SVGをPNGにバッチエクスポートする方法はありますか? ですが、これは端末から実行しますが、コンテキストメニューから実行します。この演習で何かを省略している場合は、遠慮なくお知らせください!とても感謝しています。ありがとうございました!
muruの答え を使用した後、そのソリューションが期待どおりに部分的に機能することがわかりました。
より具体的には、ファイル名の問題を解決します。それにもかかわらず、適切なconvert file.jpg -quality 30%
コマンドを実行することでファイルサイズを小さくすることも期待していましたが、次の図に示すように、ファイルサイズを大きくしています。
muru's answer で見られるパラメーターに追加すべきものがあるかどうか、誰もが知っていますか?この問題に関するヘルプを提供するためのあなたの努力に感謝します。
これは、圧縮の問題がどこにあるかを見た人に知らせるためだけに書いています。私が圧縮しようとしたファイルはすでに十分に圧縮されていたので( muruの答え で述べたように):
プロセスは、何も得ずにオーバーヘッドを追加するだけでした。
%F
は選択したすべてのファイルの名前に置き換えられるため、そのようなコマンドで%F
を2回使用することはできません。たとえば、パラメータ-c 'printf "%%s\n" "$@" > foo' %F %F
を持つsh
のコマンドは、選択されたすべてのファイルの名前を2回使用して、foo
という名前のファイルを作成します。したがって、実際に実行されるconvert
コマンドは次のとおりです。
convert file1.jpg file2.jpg ... -quality 80% file1.jpg file2.jpg ... fileN.jpg-80q.jpg
そして、最後のファイルが出力ファイル名として使用されるため、それだけが重要になります。
できることは、コマンドをbash -c
でラップし、forループを実行することです。
bash -c 'for i; do convert "$i" -quality 80% "${i/%.jpg/-80q.jpg}"; done'
(私はすべてのファイルが.jpg
で終わると仮定しています)
アクションでは、コマンドとしてbash
を使用し、パラメーターを使用します。
-c 'for i; do convert "$i" -quality 80%% "${i/%%.jpg/-80q.jpg}"; done' - %F
これをより複雑にして拡張機能を処理することができます。この時点で、アクションをスキップしてスクリプトを使用することもできます。