Quét anbom ảnh bằng tập lệnh từ dòng lệnh

Rõ ràng có một số giao diện đồ họa để quét ảnh, cung cấp nhiều tùy chọn. Nhưng khi số lượng ảnh cần quét lớn và chúng tôi không có máy quét có khay nạp tờ tự động, mọi thứ trở nên khó khăn. Nói chung bạn phải thực hiện một lần nhấp để quét, một lần nhấp khác có lẽ ở đầu bên kia của cửa sổ để lưu ... mất thời gian. Dù sao, một lý do tốt để sử dụng Dòng lệnh.

Đây là đóng góp của Rubén, do đó trở thành một trong những người chiến thắng trong cuộc thi hàng tuần của chúng tôi: «Chia sẻ những gì bạn biết về Linux«. Xin chúc mừng Rubén!

Tôi đọc các bài báo trên Xử lý hình ảnh hàng loạt với GIMP y Cách thao tác hình ảnh từ thiết bị đầu cuối, chỉ vào ngày người bạn Huguito của tôi hỏi tôi những bức ảnh (mà anh ấy đã đánh mất) trong chuyến đi mà chúng tôi đã thực hiện vào năm 1989… (4 cuộn gồm 36 bức ảnh! và tất nhiên là trên giấy 🙂. Nó nhắc tôi nhớ đến mẹo này để quét ảnh mà tôi đã quên.

Ý tưởng là sử dụng một tập lệnh để thực hiện nó càng nhanh càng tốt:

1.- Đặt ảnh trên máy quét
2.- Nhấn phím bất kỳ để quét
3.- Lặp lại quy trình, trừ khi phím được nhấn chẳng hạn là 'n' để thoát
4.- Các bức ảnh sẽ được lưu trữ và đánh số trong một thư mục con được thiết lập trước.

Lệnh gì?

Lệnh 'ma thuật' là scanimage là một phần của SANE. SANE là một API cung cấp quyền truy cập được tiêu chuẩn hóa vào bất kỳ thiết bị hình ảnh nào. API Sane thuộc miền công cộng và mã nguồn của nó có sẵn theo Giấy phép Công cộng GNU.

Cài đặt rất đơn giản. Mỗi bản phân phối mang đến các gói của nó. Đối với Ubuntu (hoặc các dẫn xuất của nó), chỉ cần sử dụng synap và cài đặt sane và sane-utils là đủ.

Cách sử dụng?

Làm thế nào tốt nhất là viết trong một thiết bị đầu cuối 'man scanimage'. Tuy nhiên, chúng tôi sẽ tóm tắt các tùy chọn mà chúng tôi sẽ sử dụng.

Chúng tôi mở một thiết bị đầu cuối và chạy scanimage -L để xem các thiết bị có sẵn:

Scnimage -L

Trong trường hợp của tôi, nó trả về:

thiết bị `xerox_mfp: libusb: 001: 005 'là thiết bị ngoại vi đa chức năng của SAMSUNG ORION

Đây là kết quả mà nó mang lại cho tôi với chiếc Samsung SCX-4200 đa chức năng của mình. Nếu bạn có MFP và bạn không thể tìm thấy thiết bị, hãy đảm bảo rằng máy in không hoạt động, chẳng hạn như với một bản in đang chờ xử lý.

Giá trị 'xerox_mfp: libusb: 001: 003' được sử dụng để cho lệnh scanimage sử dụng thiết bị nào thông qua tùy chọn -d. Nếu chỉ có một máy quét được kết nối, tùy chọn này không cần thiết.

Khi lệnh scanimage quét, nó sẽ gửi hình ảnh kết quả đến đầu ra tiêu chuẩn ở định dạng pnm hoặc tiff. Vì vậy, để quét, chúng tôi chuyển hướng đầu ra thành một tệp. Và nếu chúng ta muốn xem lệnh đang đưa ra thông điệp gì, chúng ta thêm tùy chọn -v. Nếu chúng tôi cũng muốn xem phần trăm tiến độ của hoạt động, chúng tôi thêm tùy chọn -p.

scanimage -v -p> image.tiff

scanimage: quét hình ảnh có kích thước 1284x1734 pixel ở 24 bit / pixel
scanimage: có được khung RGB
scanimage: giá trị graylevel tối thiểu / tối đa = 69/255
scanimage: đọc tổng cộng 6679368 byte
Tiến độ: 13.8%

Nó sẽ cung cấp cho chúng ta điều gì nếu chúng ta thực hiện scanimage –help? Nó có vẻ hiển nhiên, nó cung cấp một trợ giúp về lệnh. Nhưng lệnh này có một đặc thù. Ở cuối phần trợ giúp chung cho lệnh, hãy thêm các tham số cụ thể mà máy quét của bạn chấp nhận.

scanimage - trợ giúp

Cách sử dụng: scanimage [OPTION] ...

BLA bla bla….

Các tùy chọn dành riêng cho thiết bị `xerox_mfp: libusb: 001: 005 ':

Tiêu chuẩn:
--resolution 75 | 100 | 150 | 200 | 300 | 600dpi [150] Đặt độ phân giải của hình ảnh được quét.
--mode Lineart | Halftone | Grey | Color [Color] Chọn chế độ quét (ví dụ: lineart, đơn sắc hoặc màu).
--highlight 30..70% (trong các bước của 10) [không hoạt động] Chọn độ sáng tối thiểu để có điểm trắng
--source Flatbed | ADF | Auto [Flatbed] Chọn nguồn quét (chẳng hạn như khay nạp tài liệu).
Hình học:
-l 0..215.9mm (trong các bước của 1) [0] Vị trí trên cùng bên trái x của vùng quét.
-t 0..297.18mm (trong các bước của 1) [0] Trên cùng bên trái và vị trí của vùng quét.
-x 0..215.9mm (trong các bước của 1) [215.9] Chiều rộng của vùng quét.
-y 0..297.18mm (trong các bước của 1) [297.18] Chiều cao của vùng quét.

Nhập `` scanimage --help -d DEVICE '' để nhận danh sách tất cả các tùy chọn cho THIẾT BỊ.

Danh sách các thiết bị có sẵn:

xerox_mfp: libusb: 001: 005

Từ đây chúng ta có thể chọn các tùy chọn với các giá trị mà chúng ta có thể sử dụng.

Ví dụ:

Nghị quyết

– Giải pháp 150

Modo

–Mode Color

Bây giờ là hình học. Điều này rất hữu ích vì chúng tôi có thể yêu cầu máy quét chỉ trích xuất hình ảnh của một khu vực (nơi chúng tôi sẽ đặt ảnh) và chúng tôi tiết kiệm thời gian quét phần còn lại của bề mặt mà chúng tôi cũng nên cắt sau này bằng trình chỉnh sửa đồ họa như vậy như Gimp.

-l 0 bắt đầu quét theo chiều ngang từ 0 mm từ góc trên bên trái của máy quét

-t 0 bắt đầu quét theo chiều dọc từ 0 mm từ góc trên bên trái của máy quét

Lưu ý rằng tôi đã chọn đặt ảnh ở góc của máy quét [tọa độ (0,0)], vì nó dễ đặt hơn. Trên máy quét của tôi (khổ A4), tôi có thể đi từ 0 đến 215.9 và t từ 0 đến 297.18.

Chiều rộng và Chiều cao của bức ảnh. Trong trường hợp của tôi, các bức ảnh có kích thước 13x18cm:

-x rộng 180

-và cao 130

Do đó, nó sẽ chỉ quét phần nơi chúng ta đặt ảnh của mình. Tất nhiên, nếu chúng ta đồng ý về những gì là bên trái, bên phải, chiều rộng, chiều cao, trên cùng và dưới cùng. Nó sẽ phụ thuộc vào cách bạn nhìn vào máy quét của mình. Tôi khuyên bạn nên thử nghiệm các tọa độ và điều chỉnh chúng theo nhu cầu của bạn.

Ví dụ về lệnh có thể là:

scanimage -d xerox_mfp: libusb: 001: 003 -p --mode Color - độ phân giải 150 -l 0 -t 0 -x 180 -y 130> image.pnm

Với các tùy chọn này, chúng tôi đã có thể xây dựng tập lệnh của mình.

Nhưng trước đó…

Tiff hoặc pnm là các định dạng không nén, vì vậy ảnh của chúng ta sẽ chiếm dung lượng đĩa rất lớn. Đây là nơi xuất hiện lệnh chuyển đổi ImageMagick được giải thích trong Cách thao tác hình ảnh từ thiết bị đầu cuối.

Nếu chúng tôi nhận được image.pnm từ máy quét, chúng tôi có thể chuyển đổi nó thành jpg:

chuyển đổi image.pnm image.jpg

Nhưng trước khi làm như vậy, một mẹo khác:

Image.pnm chiếm rất nhiều dung lượng và chúng ta nên xóa nó sau khi nhận được image.jpg. Có một tùy chọn cho lệnh chuyển đổi để thay vì lấy một tệp từ đĩa, nó sẽ chuyển đổi trực tiếp đầu vào chuẩn. Điều này được thực hiện bằng một dấu gạch ngang - thay vì tệp:

chuyển đổi - image.jpg

Vì scanimage xuất hình ảnh được quét thành đầu ra tiêu chuẩn, chúng tôi tạo một "đường ống dẫn" và tiết kiệm thời gian xử lý cần thiết để ghi và sau đó xóa tệp image.pnm khỏi đĩa.

scanimage -d xerox_mfp: libusb: 001: 003 -p --mode Color - độ phân giải 150 -l 0 -t 0 -x 180 -y 130 | chuyển đổi - image.jpg

Bây giờ có, kịch bản ...

Chúng tôi viết mã sau vào một tệp mà chúng tôi sẽ gọi là scan-album.sh và chúng tôi cấp cho nó quyền thực thi. Khi chúng tôi chạy nó, nó sẽ tạo ra một thư mục con để chứa các bức ảnh được quét của chúng tôi. Hãy nhớ sửa đổi các giá trị tham số theo nhu cầu của bạn.

Hãy chắc chắn để đọc một số gợi ý sau kịch bản.

#! / bin / bash
# Dữ liệu cho các tùy chọn

VERBOSE = "" # see status msg: "" is not; "-v" là có
PROGRESS = "- p" # hiển thị tiến trình "" là không; "-p" là có

# Các thông số sau được cung cấp bởi scanimage - trợ giúp cho máy quét của bạn
#Device: Nếu chỉ có một máy quét thì không cần thiết, hãy đặt DEV = ""
# DEV = "xerox_mfp: libusb: 001: 003"

DEV = ""
MODE = "- màu chế độ"
RESOLUTION = "- độ phân giải 600dpi"

#geometry, ví dụ: ảnh 130x180 mm
#location trong trình quét đỉnh bên trái phía trên

x0 = 0
y0 = 0
chiều rộng = 180
cao = 130

#options:

L = "- l $ x0"
T = "- t $ y0"
WIDTH = "- x $ width"
CAO = "- và $ cao"

# tất cả các tham số cùng nhau:

PARAMETERS = "$ DEV $ VERBOSE $ TIẾN TRÌNH $ CHẾ ĐỘ $ GIẢI QUYẾT $ L $ T $ WIDTH $ HIGH"

# Tên của album. Tạo một thư mục con với tên của bạn:

ALBUM = "Ngày lễ_1989"

# Để bảo mật, tôi không làm gì nếu thư mục đã tồn tại

mkdir $ ALBUM

nếu ["$?" = "1"]; sau đó
thoát 100
fi

# Tên cơ sở cho ảnh (trong tiểu dir)

FILE = "./" $ ALBUM "/" $ ALBUM "_foto_"

câu hỏi hàm () {
quăng đi "----------------------------------------------- - ------------------------- "
bỏ lỡ
quăng đi "******************************"
echo "Số lượng ảnh đã quét:" "$ I"
quăng đi "******************************"
echo -e "Nhấn: n * n để thoát * Một phím khác để quét."
bỏ lỡ
read -s -n1 -p "Quét ảnh mới?" phím bấm
bỏ lỡ
}

##################################################

# Khởi đầu

##################################################

Tôi = 0

pregunta

while ["$ keypress"! = "n"]; làm
# ảnh mới để quét
hãy để "I + = 1"
NAME = $ FILE $ I
scanimage $ THÔNG SỐ | chuyển đổi - $ NAME.jpg
pregunta
thực hiện

Gợi ý

Sử dụng độ phân giải cao như độ phân giải trong ví dụ làm cho quá trình quét chậm hơn nhiều.

Hãy nhớ rằng nếu bạn muốn in ảnh trên giấy, bạn cần khoảng 250 chấm mỗi inch. Nếu ý tưởng quét ảnh là để in chúng ở cùng kích thước với ảnh gốc, độ phân giải 250 là đủ. Để xem chúng trên màn hình, 100 là đủ. Độ phân giải cao hơn sẽ phục vụ cho việc phóng đại.

Nên chuẩn bị trước chồng ảnh sao cho mỗi ảnh nằm ở mặt phải. Bằng cách này, bạn sẽ không lãng phí thời gian đặt nó vào máy quét để chúng không bị xoay 180º.

Khi hiệu chỉnh số đo các thông số hình học, nên quan sát để đặt bản gốc ở vị trí nào, để ảnh số không bị “lộn ngược”. Trong trường hợp của tôi, phần dưới của bức ảnh đi dọc theo trục 'l'.

Nếu bạn chỉ có một máy quét được kết nối, vui lòng không sử dụng tùy chọn -d. Trong kịch bản, nó là DEV = »»

Đôi khi các số trong "xerox_mfp: libusb: 001: 003" thay đổi và bạn sẽ phải sửa đổi nó mỗi khi sử dụng tập lệnh.

Để ý dấu gạch ngang và dấu ngoặc kép khi sao chép script. Các dấu gạch ngang (dấu trừ) có thể là một hoặc hai cùng nhau tùy thuộc vào tùy chọn; dấu ngoặc kép là dấu kép của bàn phím, chúng không phải là dấu ngoặc kép mà một số bộ xử lý văn bản như LibreOffice đặt.

Để bảo mật, tập lệnh không tạo thư mục nếu nó đã tồn tại, để không ghi đè lên các tệp nếu có. Trong trường hợp đó, nó sẽ dừng lại.

Nếu album ảnh đã cũ, đừng tiếc nếu thiếu những tấm ảnh có nhiều lông, nếp nhăn hoặc hàng kg: -


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   Junior Calderon dijo

    Chà! Thật là một hướng dẫn tốt!
    Tôi không nghĩ rằng có thể làm được nhiều thứ với bash xD
    Mỗi ngày bạn học thêm!
    Cảm ơn các đầu vào!
    Tôi không có Scaner nhưng nếu tôi có, tôi sẽ ngay lập tức thử nó 🙂

  2.   Rube dijo

    Sự đóng góp này sẽ giúp tôi rất nhiều trong việc số hóa các ghi chú của mình như thế nào, tôi hy vọng nó sẽ được cải thiện, tôi đang nghĩ đến một chức năng để quét một tệp hoàn chỉnh và phát hiện kích thước của đối tượng được quét, vì chúng tôi phụ thuộc vào độ nét của hình ảnh, nó có thể được chuyển đổi thành djvu hoặc pdf và do đó tạo ra một tệp duy nhất. Tôi chỉ lan man thôi. Cảm ơn bạn rất nhiều vì sự đóng góp.

  3.   yêu nó dijo

    Thật là niềm vui, cảm ơn bạn rất nhiều vì đã chia sẻ.