Dòng lệnh để tự động cắt một hình ảnh?


18

Bằng cách sử dụng menu của Gimp, bạn có thể tự động cắt hình ảnh (loại bỏ viền trắng). Tôi có rất nhiều hình ảnh với viền trắng có kích cỡ khác nhau. Tôi muốn loại bỏ chúng bằng cách sử dụng Gimp trong dòng lệnh nhưng tôi không thể tìm ra lệnh đó là gì.

Bất cứ ai cũng có một ý tưởng?

Có lẽ bằng cách sử dụng ImageMagick?

Câu trả lời:


38

(Chủ yếu để tham khảo trong tương lai cá nhân,) bằng ImageMagick:

convert -trim image.jpg image.jpg

Để cắt / autocrop toàn bộ thư mục:

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

Hoặc sử dụng find :

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

2
Cũng từ bộ ImageMagick, mogrifysẽ thực hiện công việc tương tự như chuyển đổi, nhưng sẽ ghi đè lên bản gốc thay vì tạo bản sao.
Yab

-transparent không hoạt động với tôi, nhưng -trim hoạt động. Cảm ơn.
Ivan ZG Xiao

4

Tôi đã không sử dụng điều này trong một thời gian nhưng hy vọng nó sẽ có ích. Tạo một tập lệnh bó gimp (tôi gọi của tôi là crop-png.scm) và đặt nó vào ~ / .gimp-2.6 / scripts /).

(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)
  )
)

Sau đó lưu scrip shell này (ví dụ: pngcrop.sh) và gọi nó trên các tệp png như thế này: '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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.