コマンドラインツールのみを使用した画像のトリミング


34

4方向のトリミングするピクセルのみを示すコマンドラインツールを使用して、CLIのみでUbuntuの画像をトリミングします。(libreofficeにあるものと同じ)

例えば:

crop image.jpg -top 5px -bottom 7px -right 14px -left 3px

そのようなツール(GUIではない)はありますか?



@ThomasWellerこれはGUIツールではなくコマンドラインを要求していますが、リンクされた質問はGUIに関するものですので、もう一度質問を読んでください
-Maythux

2
リンクされた質問は、ツールの種類を指定しません。2番目の答えは、コマンドラインツールであるimagemagickです。私は、答えが同じ場合に質問が重複するかどうかについての議論があることを知っています。人々は賛成または反対するかもしれません。
トーマスウェラー

1
@ThomasWellerしかし、答えは便利ではなく、さらに、彼がオプションをどのように、そしてなぜ使用したかを示していません。率直に言って、使用されたオプションを理解しましたか?私自身はその情報を得ることができません、それはここでの最初の答えです、それは答えを低品質にする説明なし
です-Maythux

@downvoters私はあなたと何が問題なのか知っているべきですか?!!
Maythux

回答:


38

これは、convertイメージマジックパックから使用する回避策です。

sudo apt-get install imagemagick

写真のために image.jpg

$ identify image.jpg 

image.jpg JPEG 720x482 720x482+0+0 8-bit DirectClass 100KB 0.000u 0:00.009

上記のように、入力画像は720x482pxです。

トリミングを行うには、次の2つの要素を決定する必要があります。

  1. トリミングの開始点(2つの方向を含む)
  2. トリミングされた長方形のサイズ(ここに他の方向を含めることができます)

image.jpg上の画像に戻って、切り抜きを行います。

  • 上位5ピクセル
  • 下7ピクセル
  • 右14px
  • 左3px

widthx height+ left+ top/ wx h+ l+ t形式)でそれを行うことができます:

convert image.jpg -crop 703x470+3+5 output.jpg

$ identify output.jpg 

output.jpg JPEG 703x470 703x470+0+0 8-bit DirectClass 102KB 0.000u 0:00.000

2
Imagemagick 7では、「convert」の代わりに「magick」コマンドを使用すると言われています。誰かがcommand not found: convert問題にmagick
遭遇

1
これは大きな助けでしたが、「計算」に頭を包むのに時間がかかりました。上下を切り抜くために必要な1280x1024の画像のセットがあったので、最終的な画像には元の718ピクセルの「中間」があります(上下の黒い帯を外します)。私はこれを使用する必要がありました:convert in.png -crop 1280x718+0+152 out.pngその行を意味するところ:convert in.png -crop [final-right-x]x[final-right-y]+[crop-left]+[crop-top] out.png、それは@Maythuxの数字と一致しないようですが... FWIW!
デビッド

3
703x470代わりにすべきではありません713x470か?左+右のトリミングとして、それから= 3+14 = 17px減算されるとき720703であり、ではありません713
ムーンクレーター

これは役に立ちました!また、713pxではなく703px(これに同意します)と、左と上を逆にした形式の両方を修正するように編集することを提案しましたWxH+l+t
el-teedee


9

「ユーザーフレンドリー」なCLIオプションを作成するには、以下のスクリプトを使用できます。コマンドを実行するだけです:

<script> <image> <crop_left> <crop_right> <crop_top> <crop_bottom>

同じディレクトリにimage.jpeg名前が付けられたのトリミングされた画像を作成しますimage[cropped].jpeg

スクリプト

#!/usr/bin/env python3
import subprocess
import sys

# image, crop- dimensions
img = sys.argv[1]; left = sys.argv[2]; right = sys.argv[3]; top = sys.argv[4]; bottom = sys.argv[5]
# arrange the output file's name and path
img_base = img[:img.rfind(".")]; extension = img[img.rfind("."):]; path = img[:img.rfind("/")]
img_out = img_base+"[cropped]"+extension
# get the current img' size
data = subprocess.check_output(["identify", img]).decode("utf-8").strip().replace(img, "")
size = [int(n) for n in data.replace(img, "").split()[1].split("x")]
# calculate the command to resize
w = str(size[0]-int(left)-int(right)); h = str(size[1]-int(top)-int(bottom)); x = left; y = top
# execute the command
cmd = ["convert", img, "-crop", w+"x"+h+"+"+x+"+"+y, "+repage", img_out]
subprocess.Popen(cmd)

使い方

  1. スクリプトは imagemagick

    sudo apt-get install imagemagick
    
  2. 上記のスクリプトをcrop_image(拡張子なし)として保存します~/bin

  3. 必要に応じてディレクトリを作成します。その場合は、実行source ~/.profileして、ディレクトリをに表示し$PATHます。
  4. スクリプトを実行可能にします。

次に、前述のように、名前でスクリプトを実行します。次に例を示します。

crop_image /path/to/image.jpg 20 30 40 50

その場合、引用符を使用する限り、スペースは問題ありません。

crop_image '/path/with spaces in the name/to/image.jpg' 20 30 40 50

@Maythux最新の編集の意味がわからない場合は、上記のソリューションがシステムで機能しないということですか?cliのみです。
ジェイコブVlijm

申し訳ありませんが、3日前に休んでいたので、なぜあなたが下票を得るのかわかりません。
Maythux

しかし、私は、これは初心者のためにかなり難しくネイティブトリミングツールを使用するよりも少しだろう作品にも思いますが、私のために私はあなたの方法、かなりクールを愛し、申し訳ありません再び遅延のために
Maythux

わあ、ありがとう。:私は、このためだdownvote meta.askubuntu.com/questions/14082/...
ヤコブVlijm

評判を悪用しない限り、なぜ良い答え/質問が下されるのか、私にはわかりません。この質問は-3になります!!! hhhh理由がわからない
-Maythux

3

image magickパックで変換コマンドを使用できます。
インストールしますsudo apt-get install imagemagicksudo yum install ImageMagick
次に-crop geometry、画像のトリミングに使用します。詳細については、こちらをご覧ください


この収穫量は比率であり、マージンは異なります
-Maythux

いいえ、-cropオプションはを提供しxyそれはオフセットとgravityです。あなたはそれを使用して正方形を
切り取るために時間をかける

とにかくあなたの助けに感謝しますが、前にあなたの答えにそれを書く必要があります4
Maythux

@Arronical Thanks私はすでにそれを得て、答えとして投稿しました。それを確認してください
Maythux

3

を使用しmogrify -crop <W>x<H>+<X>+<Y> <files>ます。

注意:ファイルは予告なく上書きされます。


1

cropコマンドが4つのものを必要とします。それを理解するには、切り取りたい画像を取ります。ここで、イメージ上で、保持したいサイズの長方形を描いていると想像してください。この長方形の外側の領域は削除され、切り取られます。長方形を傾けてはいけません。つまり、上面が水平でなければなりません。

次に、次の4つのことを書き留めます。

  1. 長方形のピクセル単位の幅(W)
  2. 長方形の高さ(H)
  3. 画像の左マージン/左端(L)からの長方形の左縦辺の距離
  4. 画像の上マージン/画像の端から長方形の上側の距離(T)。

したがって、W、H、L、およびTの値が得られます。ここまでは順調ですね。ピクセルを知るには、Ubuntuにkruleツールをインストールします。非常に便利。

ここで、ターミナルを開き、画像が保存されているフォルダーに移動します。次のコマンドを使用して、W、H、L、およびTの値を適切に設定します。

convert input.jpg -crop WxH+L+T output.jpg
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.