Pindai album foto dengan skrip dari baris perintah

Jelas ada beberapa antarmuka grafis untuk memindai foto, yang menyediakan banyak opsi. Tetapi jika jumlah foto yang dipindai banyak dan kami tidak memiliki pemindai yang memiliki pemasok lembar otomatis, segalanya menjadi sulit. Secara umum Anda harus melakukan satu klik untuk memindai, klik lain mungkin di ujung lain jendela untuk menyimpan ... itu membutuhkan waktu. Bagaimanapun, alasan yang bagus untuk menggunakan file Garis komando.

Ini adalah kontribusi dari Rubén, sehingga menjadi salah satu pemenang kompetisi mingguan kami: «Bagikan apa yang Anda ketahui tentang Linux«. Selamat Rubén!

Saya membaca artikel di Pemrosesan Gambar Batch dengan GIMP y Bagaimana memanipulasi gambar dari terminal, tepat pada hari teman saya Huguito meminta foto (yang hilang) dari perjalanan yang kami lakukan pada tahun 1989… (4 gulungan dari 36 foto! dan di atas kertas, tentu saja 🙂. Ini mengingatkan saya pada tip ini untuk memindai foto yang telah saya lupakan.

Idenya adalah menggunakan skrip untuk melakukannya secepat mungkin:

1.- Letakkan foto pada pemindai
2.- Tekan sembarang tombol untuk memindai
3.- Ulangi prosedur ini, kecuali jika tombol yang ditekan misalnya 'n' untuk keluar
4.- Foto akan disimpan dan diberi nomor dalam subdirektori yang telah ditetapkan sebelumnya.

Perintah apa?

Perintah 'ajaib' adalah scanimage yang merupakan bagian dari SANE. SANE adalah API yang menyediakan akses standar ke perangkat pencitraan apa pun. Sane API berada di domain publik dan kode sumbernya tersedia di bawah Lisensi Publik Umum GNU.

Pemasangannya sederhana. Setiap distribusi membawa paketnya sendiri. Untuk Ubuntu (atau turunannya), cukup menggunakan synaptic dan menginstal sane and sane-utils.

Cara Penggunaan?

Bagaimana selalu yang terbaik adalah menulis di terminal 'man scanimage'. Namun, kami akan meringkas opsi yang akan kami gunakan.

Kami membuka terminal dan menjalankan scanimage -L untuk melihat perangkat yang tersedia:

gambar pindaian -L

Dalam kasus saya ini mengembalikan:

perangkat `xerox_mfp: libusb: 001: 005 'adalah perangkat multi-fungsi SAMSUNG ORION

Ini adalah hasil yang saya dapatkan dengan multifungsi Samsung SCX-4200 saya. Jika Anda memiliki all-in-one dan Anda tidak dapat menemukan perangkat, pastikan printer tidak aktif, misalnya dengan cetakan yang tertunda.

Nilai 'xerox_mfp: libusb: 001: 003' digunakan untuk memberi tahu perintah scanimage perangkat mana yang akan digunakan melalui opsi -d. Jika hanya satu pemindai yang terhubung, opsi ini tidak diperlukan.

Saat perintah scanimage memindai, ia mengirimkan gambar yang dihasilkan ke output standar dalam format pnm atau tiff. Jadi untuk memindai kita mengarahkan output ke file. Dan jika kita ingin melihat pesan apa yang diberikan oleh perintah, kita menambahkan opsi -v. Jika kami juga ingin melihat persentase kemajuan operasi, kami menambahkan opsi -p.

scanimage -v -p> image.tiff

scanimage: memindai gambar berukuran 1284x1734 piksel dengan kecepatan 24 bit / piksel
scanimage: memperoleh bingkai RGB
scanimage: nilai tingkat abu-abu min / maks = 69/255
scanimage: membaca total 6679368 byte
Kemajuan: 13.8%

Apa yang akan diberikan jika kita memindaiimage –help? Tampak jelas, itu memberi bantuan pada perintah. Tetapi perintah ini memiliki kekhasan. Di akhir bantuan umum untuk perintah, tambahkan parameter spesifik yang diterima pemindai Anda.

scanimage --bantuan

Penggunaan: scanimage [OPTION] ...

BLA bla ....

Opsi khusus untuk perangkat `xerox_mfp: libusb: 001: 005 ':

standar:
--resolusi 75 | 100 | 150 | 200 | 300 | 600dpi [150] Mengatur resolusi gambar yang dipindai.
--mode Lineart | Halftone | Grey | Color [Color] Memilih mode pemindaian (mis., seni garis, monokrom, atau warna).
--highlight 30..70% (di langkah 10) [nonaktif] Pilih kecerahan minimum untuk mendapatkan titik putih
--source Flatbed | ADF | Auto [Flatbed] Memilih sumber pindai (misalnya pemasok dokumen).
Geometri:
-l 0..215.9mm (dalam langkah 1) [0] Posisi x kiri atas area pemindaian.
-t 0..297.18mm (dalam langkah 1) [0] Kiri atas dan posisi area pindai.
-x 0..215.9mm (dalam langkah 1) [215.9] Lebar area pindai.
-y 0..297.18mm (dalam langkah 1) [297.18] Tinggi area pindai.

Ketik `` scanimage --help -d DEVICE '' untuk mendapatkan daftar semua opsi untuk DEVICE.

Daftar perangkat yang tersedia:

xerox_mfp: libusb: 001: 005

Dari sini kita bisa memilih opsi dengan nilai yang bisa kita gunakan.

Contoh:

Resolusi

–Resolusi 150

Modo

–Mode Warna

Sekarang geometri. Ini sangat berguna karena kami dapat memberi tahu pemindai untuk hanya mengekstrak gambar dari suatu sektor (tempat kami akan meletakkan foto), dan kami menghemat waktu pemindaian sisa permukaan yang juga harus kami potong nanti dengan editor grafis seperti itu. sebagai Gimp.

-l 0 mulai memindai secara horizontal dari 0 mm dari sudut kiri atas pemindai

-t 0 mulai memindai secara vertikal dari 0 mm dari sudut kiri atas pemindai

Perhatikan bahwa saya memilih untuk meletakkan foto di sudut pemindai [koordinat (0,0)], karena lebih mudah untuk ditempatkan. Pada pemindai saya (ukuran A4), saya dapat beralih dari 0 hingga 215.9 dan t dari 0 hingga 297.18.

Lebar dan Tinggi foto. Dalam kasus saya, fotonya berukuran 13x18cm:

-x 180 lebar

-dan 130 tinggi

Oleh karena itu hanya akan memindai bagian tempat kita meletakkan foto kita. Tentu saja, jika kita sepakat tentang kiri, kanan, lebar, tinggi, atas dan bawah. Ini akan tergantung pada bagaimana Anda melihat pemindai Anda. Saya sarankan untuk menguji koordinat dan menyesuaikannya dengan kebutuhan Anda.

Contoh perintahnya bisa jadi:

scanimage -d xerox_mfp: libusb: 001: 003 -p --mode Color --resolution 150 -l 0 -t 0 -x 180 -y 130> image.pnm

Dengan opsi ini, kami sudah dapat membuat skrip kami.

Tapi sebelum…

Tiff atau pnm adalah format yang tidak terkompresi, jadi foto kita akan menggunakan ruang disk yang besar. Di sinilah perintah konversi ImageMagick datang yang dijelaskan dalam Cara memanipulasi gambar dari terminal.

Jika kita mendapatkan image.pnm dari pemindai, kita dapat mengubahnya menjadi jpg:

mengkonversi image.pnm image.jpg

Tetapi sebelum melakukannya, trik lain:

Image.pnm memakan banyak ruang dan kita harus menghapusnya setelah mendapatkan image.jpg kita. Ada opsi untuk perintah convert sehingga alih-alih mengambil file dari disk, ia akan langsung mengubah input standar. Ini dilakukan dengan tanda hubung - alih-alih file:

mengkonversi - gambar.jpg

Karena scanimage mengirimkan gambar yang dipindai ke output standar, kami membuat "pipeline" dan menghemat waktu pemrosesan yang diperlukan untuk menulis dan kemudian menghapus file image.pnm dari disk.

scanimage -d xerox_mfp: libusb: 001: 003 -p --mode Color --resolution 150 -l 0 -t 0 -x 180 -y 130 | mengkonversi - gambar.jpg

Sekarang ya, skrip ...

Kami menulis kode berikut dalam file yang akan kami sebut scan-album.sh dan kami memberinya izin eksekusi. Saat kami menjalankannya, ini akan membuat subdirektori di mana foto kami yang dipindai akan berada. Ingatlah untuk mengubah nilai parameter sesuai kebutuhan Anda.

Pastikan untuk membaca beberapa saran setelah skrip.

#! / bin / bash
# Data untuk opsi

VERBOSE = "" # lihat pesan status: "" bukan; "-v" adalah ya
KEMAJUAN = "- p" # tampilkan kemajuan "" tidak ada; "-p" adalah ya

# Parameter berikut diberikan oleh scanimage --help untuk pemindai Anda
#Perangkat: Jika hanya ada satu pemindai, tidak perlu, letakkan DEV = ""
# DEV = "xerox_mfp: libusb: 001: 003"

DEV = ""
MODE = "- mode Warna"
RESOLUSI = "- resolusi 600dpi"

#geometri, misalnya foto 130x180 mm
#lokasi di pemindai simpul kiri atas

x0 = 0
y0 = 0
lebar = 180
tinggi = 130

#pilihan:

L = "- l $ x0"
T = "- t $ y0"
LEBAR = "- x $ lebar"
TINGGI = "- dan $ tinggi"

# semua parameter bersama-sama:

PARAMETERS = "$ DEV $ VERBOSE $ PROGRESS $ MODE $ RESOLUSI $ L $ T $ LEBAR $ TINGGI"

# Nama album. Buat subdirektori dengan nama Anda:

ALBUM = "Holidays_1989"

# Demi keamanan, saya tidak melakukan apa pun jika direktori sudah ada

mkdir $ ALBUM

jika ["$?" = "1"]; kemudian
keluar 100
fi

# Nama dasar untuk foto (dalam sub dir)

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

pertanyaan fungsi () {
membuang "----------------------------------------------- - ------------------------- "
gema
membuang "******************************"
echo "Jumlah foto yang dipindai:" "$ I"
membuang "******************************"
echo -e "Tekan: n * n untuk keluar * Tombol lain untuk memindai."
gema
read -s -n1 -p "Pindai foto baru?" penekanan tombol
gema
}

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

# Mulailah

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

I = 0

pertanyaan

sementara ["$ keypress"! = "n"]; melakukan
# foto baru untuk dipindai
biarkan "I + = 1"
NAMA = $ FILE $ I
scanimage $ PARAMETERS | mengonversi - $ NAME.jpg
pertanyaan
dilakukan

Saran

Menggunakan resolusi tinggi seperti yang di contoh membuat pemindaian jauh lebih lambat.

Perlu diingat bahwa jika Anda ingin mencetak foto di atas kertas, Anda membutuhkan sekitar 250 dot per inci. Jika gagasan memindai foto adalah mencetaknya dengan ukuran yang sama dengan aslinya, resolusi 250 sudah cukup. Cukup melihatnya di monitor dengan 100. Resolusi yang lebih tinggi akan berfungsi untuk pembesaran.

Tumpukan foto harus disiapkan terlebih dahulu agar setiap foto berada di sisi kanan. Dengan cara ini Anda tidak akan membuang waktu memasukkannya ke dalam pemindai agar tidak diputar 180º.

Saat mengkalibrasi pengukuran parameter geometri, disarankan untuk mengamati di posisi mana untuk menempatkan aslinya, sehingga gambar digital tidak "terbalik". Dalam kasus saya, bagian bawah foto berada di sepanjang sumbu 'l'.

Jika Anda hanya memiliki satu pemindai yang terhubung, jangan ragu untuk tidak menggunakan opsi -d. Dalam skrip itu adalah DEV = »»

Kadang-kadang angka berubah di "xerox_mfp: libusb: 001: 003" dan Anda harus mengubahnya setiap kali Anda menggunakan skrip.

Hati-hati dengan tanda hubung dan kutipan saat menyalin skrip. Tanda hubung (tanda minus) bisa satu atau dua bersama-sama tergantung pada opsinya; tanda kutip adalah dua kali lipat dari keyboard, bukan tanda kutip yang diberikan oleh beberapa pengolah kata seperti LibreOffice.

Demi keamanan, script tidak membuat direktori jika sudah ada, agar tidak menimpa file jika ada. Dalam hal itu berhenti.

Jika album fotonya sudah tua, jangan menyesal jika gambarnya banyak di rambut, keriput atau kilo hilang: -


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.

  1.   Junior Calderon dijo

    Wow! Tuto yang bagus!
    Saya tidak berpikir bahwa banyak hal yang bisa dilakukan dengan bash xD
    Setiap hari Anda belajar lebih banyak!
    Terima kasih atas masukan!
    Saya tidak memiliki Scaner tetapi jika saya mendapatkannya, saya akan segera mencobanya 🙂

  2.   Orang udik dijo

    Seberapa baik kontribusi ini akan banyak membantu saya dalam mendigitalkan catatan saya, saya harap ini meningkat, saya memikirkan fungsi untuk memindai file lengkap dan mendeteksi ukuran objek yang dipindai, karena kami bergantung pada gambar tenung, itu bisa dikonversi ke djvu atau pdf dan dengan demikian membuat satu file. Yah, aku baru saja mengoceh. Terima kasih banyak atas kontribusinya.

  3.   suka sekali dijo

    Senang sekali, terima kasih banyak telah berbagi.