Chuyển đổi (nén) hình ảnh JPEG bằng cách sử dụng mogrify giữ các tệp gốc trong cùng thư mục


0

Tôi đang cố gắng chuyển đổi (nén) một loạt các hình ảnh JPEG bằng cách sử dụng lệnh tưởng tượng, giữ tệp gốc trong cùng một thư mục. Tôi đang gõ vào cửa sổ terminal: mogrify -quality 25% * .JPEG con-% 002d.JPEG sau đó tôi gặp lỗi: mogrify: không thể mở hình ảnh `con-% 002d.JPEG ': Không có tệp hoặc thư mục như vậy @ error /blob.c/OpenBlob/2712. Làm thế nào tôi có thể giải quyết lỗi này? Tôi đã chạy: xác định -verbose * | Định dạng grep và kết quả là cho tất cả các tệp: Định dạng: JPEG (Định dạng JFIF của nhóm chuyên gia chụp ảnh chung) exif: hình thu nhỏ: JPEGInterchangeFormat: 10718 exif: hình thu nhỏ: JPEGInterchangeFormatLpm: 8223

Hệ thống của tôi là Xubfox 16.04, tôi đánh giá cao một số trợ giúp, cảm ơn Vladi.


1
mogrifykhông có tùy chọn tệp đầu ra: nó luôn thay thế các tệp gốc và con-%002d.JPEGđược coi là một tệp đầu vào khác (không tồn tại) sau *.JPEGdanh sách.
AFH

Bạn đang tìm loại tên đầu ra nào? Đánh số tuần tự?
nhai vớ

@chewsocks Tôi đã đọc một số nơi (tôi không nhớ là ở đâu) rằng tôi có thể nén một tệp JPEG được đặt tên tệp đầu ra không thay thế tệp gốc. Tên đầu ra có thể là một số liên tiếp hoặc một cái gì đó như con-001.JPEG, con-002.JPEG, con-003.JPEG, ....
vladimir pavloski

Bạn có thể đã nghĩ đến việc ffmpeghỗ trợ đặt tên đầu ra tuần tự.
nhai vớ

@chewsocks Không, tôi không sai, đó là về lệnh mogrify tưởng tượng.
vladimir pavloski

Câu trả lời:


1

Trên mỗi trang man mogrify không có tùy chọn đầu ra, nó chỉ ghi đè lên tệp đầu vào trừ khi định dạng được thay đổi (cùng tên được sử dụng cho phần mở rộng tệp).

Hãy thử điều này bằng cách sử dụng convertthay thế.

#!/bin/bash
n=1
for i in *.JPEG; do 
    convert "$i" -format jpg -quality '25%' $(printf con-%03d.JPEG $n)
    n=$((n+1))
done

JPEG vs jpg

Tôi đã nhầm lẫn cùng một hình ảnh hai lần

$ mogrify -format JPEG b.jpg
$ mogrify -format jpg b.jpg

Sau đó

$ diff -u <(identify -verbose b.jpg ) <(identify -verbose b.JPEG)
--- /dev/fd/63  2018-09-29 14:42:27.506462707 -0400
+++ /dev/fd/62  2018-09-29 14:42:27.510462929 -0400
@@ -1 +1 @@
-Image: b.jpg
+Image: b.JPEG
@@ -71,2 +71,2 @@
-    date:create: 2018-09-29T14:37:11-04:00
-    date:modify: 2018-09-29T14:37:11-04:00
+    date:create: 2018-09-29T14:37:03-04:00
+    date:modify: 2018-09-29T14:37:03-04:00
@@ -77 +77 @@
-    filename: b.jpg
+    filename: b.JPEG

ĐỒNG Ý!! Thế là xong. Cảm ơn. Tôi có thể hỏi sự khác biệt giữa định dạng JPEG và jpg fomat không? Tập lệnh ở trên chuyển đổi thành "jpg" sau đó đầu ra tệp mới được lưu dưới dạng ".JPEG" là gì? cảm ơn
vladimir pavloski

@vladimirpavloski Câu hỏi hay ... thói quen = P. Tôi tránh viết hoa trong tên của mình vì vậy tôi luôn nghĩ định dạng là "jpg". convertkhông thực thi các phần mở rộng tập tin (bạn có thể lưu JPEG dưới dạng .txt) và vì tôi đang nói cụ thể nên tôi thấy bạn thích "JPEG".
nhai vớ

0

Sử dụng -write

mogrify -set filename:name '%t_q%Q' -quality 30 -write '%[filename:name].jpg' *.jpg

Lệnh trên sẽ ghi hình ảnh được chuyển đổi sang một tên mới: convert name.jpg thành name_q30.jpg , name1.jpg thành name1_q30.jpg . Giữ các tập tin cũ của bạn an toàn.

Để biết các tùy chọn siêu dữ liệu thoát phần trăm khác , hãy xem tài liệu

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.