स्वचालित रूप से एक छवि क्रॉप करने के लिए कमांड लाइन?


18

जिम्प के मेनू का उपयोग करके, आप स्वचालित रूप से छवि को निकाल सकते हैं (सफेद सीमाओं को हटाते हुए)। मेरे पास विभिन्न आकारों की सफेद सीमाओं के साथ बहुत सारी छवियां हैं। मैं कमांड लाइन में जिम्प का उपयोग करके उन्हें निकालना चाहता हूं, लेकिन मैं यह पता नहीं लगा सकता कि कमांड क्या है।

किसी को एक विचार है?

शायद ImageMagick का उपयोग करके?

जवाबों:


38

(मुख्य रूप से व्यक्तिगत भविष्य के संदर्भ के लिए), ImageMagick का उपयोग करते हुए:

convert -trim image.jpg image.jpg

संपूर्ण निर्देशिका को ट्रिम / ऑटोक्रॉप करने के लिए:

for a in *.jpg; do convert -trim "$a" "$a"; done

या इसका उपयोग करते खोज :

find -name "*.jpg" -exec convert -trim "{}" "{}" \;

2
इसके अलावा ImageMagick सुइट से, mogrifyकन्वर्ट के रूप में एक ही काम करेगा, लेकिन प्रतियां बनाने के बजाय मूल को ओवरराइट कर देगा।
यब

-ट्रांसपेरेंट मेरे लिए काम नहीं करता, लेकिन -ट्रिम का काम करता है। धन्यवाद।
इवान जेडजी जिओ

4

मैंने थोड़ी देर में इसका इस्तेमाल नहीं किया है, लेकिन उम्मीद है कि यह मदद करेगा। एक जिम्प बैच स्क्रिप्ट बनाएं (मुझे मेरा फसल- png.scm कहते हैं), और इसे ~ / .gimp-2.6 / स्क्रिप्ट /) में डालें।

(define (crop-png filename)
  (let* 
    (
    (image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
    (drawable (car (gimp-image-get-active-layer image)))
    )

  ; crop the image
  (plug-in-autocrop RUN-NONINTERACTIVE image drawable)

  ; save in original png format
  (file-png-save RUN-NONINTERACTIVE image drawable filename filename
       0 6 0 0 0 1 1)

  ; clean up the image
  (gimp-image-delete image)
  )
)

फिर इस शेल विभाजन (जैसे, pngcrop.sh) को सहेजें और इसे पीएनजी फ़ाइलों पर इस तरह से कॉल करें: 'pngcrop.sh * .png'।

#!/bin/bash

if [ $# -le 0 ]; then
    echo
    echo "Usage: $(basename $0) file1.png [file2.png ...]"
    echo
    echo "  This script uses gimp to autocrop PNG files and"
    echo "  save them to PNG format.  You must have"
    echo "  crop-png.scm installed in your gimp "
    echo "  scripts directory."
    echo
    exit 1
fi

# set the filelist
files=$*

# # set the base command
# CMD="gimp -i -b "

# loop and add each file
for i in ${files[*]} ; do
  # #echo $i
  # ARGS="\"(crop-png \\\"$i\\\")\""
  # CMD="$CMD $ARGS"

  gimp -i -b "(crop-png \"$i\")" -b "(gimp-quit 0)"
done

# # add the end to quit
# TAIL="-b \"(gimp-quit 0)\""
# CMD="$CMD $TAIL"
# 
# #echo $CMD
# eval $CMD
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.