Skenirajte album fotografija skriptom iz naredbenog retka

Jasno je da ih ima nekoliko grafička sučelja za skeniranje fotografija, koji nude brojne mogućnosti. Ali kada je broj fotografija za skeniranje velik, a mi nemamo skener koji ima automatski ulagač listova, stvari postaju teške. Općenito morate kliknuti za skeniranje, još jedan klik možda na drugom kraju prozora da biste spremili ... treba vremena. U svakom slučaju, dobar izgovor za upotrebu Komandna linija.

Ovo je doprinos Rubéna, postajući tako jedan od pobjednika našeg tjednog natjecanja: «Podijelite ono što znate o Linuxu«. Čestitamo Rubén!

Čitao sam članke o Skupna obrada slika pomoću GIMP-a y Kako manipulirati slikama s terminala, baš onog dana kad me je moj prijatelj Huguito pitao za fotografije (koje je izgubio) putovanja koje smo odradili 1989. godine ... (4 role od 36 fotografija! i na papiru, naravno). Podsjetio me na ovaj savjet za skeniranje fotografije koje sam zaboravio.

Ideja je koristiti skriptu kako bi to učinila što je brže moguće:

1.- Stavite fotografiju na skener
2.- Pritisnite bilo koju tipku za skeniranje
3.- Ponovite postupak, osim ako pritisnuta tipka nije na primjer 'n' za izlaz
4.- Fotografije će biti spremljene i numerirane u unaprijed uspostavljenom poddirektoriju.

Koja naredba?

Naredba 'magic' je scanimage koja je dio SANE-a. SANE je API koji pruža standardizirani pristup bilo kojem uređaju za obradu slika. Sane API je u javnoj domeni i njegov izvorni kod je dostupan pod GNU General Public License.

Instalacija je jednostavna. Svaka distribucija donosi svoje pakete. Za Ubuntu (ili njegove derivate) dovoljno je koristiti sinaptik i instalirati zdrave i razumne utiluse.

Kako koristiti?

Kako je uvijek najbolje pisati na terminalu 'man scanimage'. Međutim, rezimirat ćemo opcije koje ćemo koristiti.

Otvaramo terminal i pokrećemo scanimage -L da vidimo dostupne uređaje:

scanimage -L

U mom slučaju se vraća:

Uređaj `xerox_mfp: libusb: 001: 005 'je SAMSUNG ORION višenamjenski periferni uređaj

Ovo je rezultat koji mi je dao sa mojim Samsung SCX-4200 multifunkcionalnim uređajem. Ako imate višenamjenski uređaj i ne možete pronaći uređaj, provjerite je li pisač aktivan, na primjer s ispisom na čekanju.

Vrijednost 'xerox_mfp: libusb: 001: 003' koristi se za naredbu scanimage koji će uređaj koristiti pomoću opcije -d. Ako je povezan samo jedan skener, ova opcija nije potrebna.

Kada naredba scanimage skenira, šalje rezultirajuću sliku na standardni izlaz u pnm ili tiff formatu. Dakle, za skeniranje preusmjeravamo izlaz u datoteku. A ako želimo vidjeti koje poruke daje naredba, dodamo opciju -v. Ako također želimo vidjeti postotak napretka operacije, dodamo opciju -p.

scanimage -v -p> image.tiff

scanimage: skeniranje slike veličine 1284x1734 piksela na 24 bita / piksel
scanimage: sticanje RGB okvira
slika skeniranja: minimalna / maksimalna vrijednost nivoa greylea = 69/255
scanimage: čita ukupno 6679368 bajtova
Napredak: 13.8%

Šta će nam dati ako napravimo pomoćnu sliku? Čini se očitim, pruža pomoć u naredbi. Ali ova naredba ima posebnost. Na kraju opće pomoći za naredbu dodajte specifične parametre koje vaš skener prihvaća.

scanimage - pomoć

Upotreba: scanimage [OPCIJA] ...

BLA bla ....

Opcije specifične za uređaj `xerox_mfp: libusb: 001: 005 ':

standard:
--resolution 75 | 100 | 150 | 200 | 300 | 600 dpi [150] Postavlja rezoluciju skenirane slike.
--mode Lineart | Halftone | Gray | Colour [Color] Odabir načina skeniranja (npr. lineart, monokromatski ili boja).
--highlight 30..70% (u koracima od 10) [neaktivno] Odaberite minimalnu svjetlinu da biste dobili bijelu točku
--source Flatbed | ADF | Auto [Flatbed] Odabir izvora skeniranja (kao što je ulagač dokumenata).
Geometrija:
-l 0..215.9 mm (u koracima od 1) [0] Gornji lijevi x položaj područja skeniranja.
-t 0..297.18 mm (u koracima od 1) [0] Gornji lijevi i položaj područja skeniranja.
-x 0..215.9 mm (u koracima od 1) [215.9] Širina područja skeniranja.
-y 0..297.18 mm (u koracima od 1) [297.18] Visina područja skeniranja.

Upišite `` scanimage --help -d UREĐAJ '' da biste dobili listu svih opcija za UREĐAJ.

Lista dostupnih uređaja:

xerox_mfp: libusb: 001: 005

Odavde možemo odabrati opcije s vrijednostima koje možemo koristiti.

Primjer:

Rezolucija

–Rezolucija 150

modo

–Mode Color

Sada geometrija. Ovo je vrlo korisno jer skeneru možemo reći da izdvoji samo sliku jednog sektora (gdje ćemo staviti fotografiju), a štedimo vrijeme skeniranja ostatka površine što bismo kasnije trebali izrezati i pomoću grafičkog uređivača kao Gimp.

-l 0 započinje skeniranje vodoravno od 0 mm od gornjeg lijevog ugla skenera

-t 0 započinje skeniranje vertikalno od 0 mm od gornjeg lijevog kuta skenera

Imajte na umu da sam odabrao fotografiju staviti u kut skenera [koordinate (0,0)], jer ga je lakše postaviti. Na mom skeneru (veličina A4) mogu ići od 0 do 215.9, a t od 0 do 297.18.

Širina i visina fotografije. U mom slučaju su fotografije dimenzija 13x18cm:

-x 180 širina

-i 130 visoko

Stoga će skenirati samo dio u koji smo stavili našu fotografiju. Naravno, ako se složimo oko toga što je lijevo, desno, širina, visina, gornji i donji dio. Ovisit će o tome kako gledate na svoj skener. Predlažem da testirate koordinate i prilagodimo ih vašim potrebama.

Primjer naredbe može biti:

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

Pomoću ovih opcija već bismo mogli napraviti našu skriptu.

Ali prije ...

Tiff ili pnm su nekomprimirani formati, tako da će naše fotografije zauzeti ogroman prostor na disku. Tu dolazi naredba za pretvaranje ImageMagick koja je objašnjena u Kako manipulirati slikama s terminala.

Ako iz skenera dobijemo image.pnm, možemo ga pretvoriti u jpg:

pretvori image.pnm image.jpg

Ali prije toga, još jedan trik:

Image.pnm zauzima puno prostora i trebali bismo ga obrisati nakon što nabavimo image.jpg. Postoji opcija za naredbu convert, tako da će umjesto preuzimanja datoteke s diska izravno pretvoriti standardni ulaz. To se postiže crticom - umjesto datoteke:

convert - image.jpg

Budući da scanimage skeniranu sliku isporučuje na standardni izlaz, pravimo "cjevovod" i štedimo vrijeme obrade potrebno za pisanje, a zatim brišemo datoteku image.pnm s diska.

scanimage -d xerox_mfp: libusb: 001: 003 -p --mode Boja --rezolucija 150 -l 0 -t 0 -x 180 -y 130 | convert - image.jpg

Sad da, skripta ...

Sljedeći kod zapisujemo u datoteku koju ćemo nazvati scan-album.sh i dajemo mu odobrenje za izvršenje. Kada ga pokrenemo, stvorit će poddirektorij u kojem će biti naše skenirane fotografije. Ne zaboravite prilagoditi vrijednosti parametara prema svojim potrebama.

Svakako pročitajte neke prijedloge nakon skripte.

#! / bin / bash
# Podaci za opcije

VERBOSE = "" # vidi statusnu poruku: "" nije; "-v" je da
PROGRESS = "- p" # prikaži napredak "" je ne; "-p" je da

# Sljedeći parametri dati su od strane scanimage --help za vaš skener
#Uređaj: Ako postoji samo jedan skener, nije potreban, stavite DEV = ""
# DEV = "xerox_mfp: libusb: 001: 003"

DEV = ""
MODE = "- način rada u boji"
RESOLUTION = "- rezolucija 600dpi"

#geometrija, npr. fotografija 130x180 mm
#location u gornjem lijevom skeneru tjemena

x0 = 0
y0 = 0
širina = 180
visoko = 130

#options:

L = "- l $ x0"
T = "- t $ y0"
WIDTH = "- x $ širina"
HIGH = "- i $ visoko"

# svi parametri zajedno:

PARAMETRI = "$ DEV $ VERBOSE $ PROGRESS $ MODE $ RESOLUTION $ L $ T $ WIDTH $ HIGH"

# Naziv albuma. Kreirajte poddirektorij sa svojim imenom:

ALBUM = "Praznici_1989"

# Iz sigurnosnih razloga ne radim ništa ako direktorij već postoji

mkdir $ ALBUM

if ["$?" = "1"]; onda
izlaz 100
fi

# Osnovno ime za fotografije (u podrežiru)

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

pitanje funkcije () {
izbacio "----------------------------------------------- - ------------------------- "
odjek
izbacio "******************************"
echo "Broj skeniranih fotografija:" "$ I"
izbacio "******************************"
echo -e "Pritisnite: n * n za izlaz * Još jedan taster za skeniranje."
odjek
read -s -n1 -p "Skenirati novu fotografiju?" pritiskom tipke
odjek
}

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

# Start

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

I = 0

pitanje

while ["$ keypress"! = "n"]; učiniti
# nova fotografija za skeniranje
neka je "I + = 1"
IME = $ FILE $ I
scanimage $ PARAMETRI | pretvori - $ NAME.jpg
pitanje
done

Sugestije

Korištenje visokih rezolucija poput onih u primjeru čini skeniranje mnogo sporijim.

Imajte na umu da ako želite ispisati fotografiju na papir, potrebno vam je oko 250 tačaka po inču. Ako je ideja skeniranja fotografija ispisati ih u istoj veličini kao i original, dovoljna je rezolucija 250. Da biste ih vidjeli na monitoru, dovoljno je 100. Veća rezolucija poslužila bi za uvećanje.

Svežanj fotografija treba pripremiti unaprijed tako da svaka fotografija bude s desne strane. Na taj način nećete gubiti vrijeme stavljajući ga u skener tako da se ne okrenu za 180º.

Pri kalibraciji mjerenja geometrijskih parametara, poželjno je paziti u kojem položaju postaviti original, tako da digitalne slike ne budu "naopako". U mom slučaju donji dio fotografije ide duž osi 'l'.

Ako imate spojen samo jedan skener, slobodno ne koristite opciju -d. U skripti je DEV = »»

Ponekad se brojevi mijenjaju u "xerox_mfp: libusb: 001: 003" i morat ćete ga mijenjati svaki put kada koristite skriptu.

Pri kopiranju skripte pripazite na crtice i citate. Crtice (znak minus) mogu biti jedan ili dva zajedno, ovisno o opciji; navodnici su dvostruki u odnosu na tastaturu, oni nisu oni koje neki procesori teksta poput LibreOffice stavljaju.

Iz sigurnosnih razloga skripta ne kreira direktorij ako već postoji, kako ne bi prepisala datoteke ako ih ima. U tom slučaju prestaje.

Ako je foto album star, nemojte žaliti ako slike obiluju kosom, borama ili kilogramima: -


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Juniori Calderon rekao je

    Vau! Kakav dobar tuto!
    Nisam mislio da se toliko stvari može učiniti sa bash xD
    Svaki dan učite više!
    Hvala na unosu!
    Nemam skaner, ali ako ga dobijem, odmah ću ga probati 🙂

  2.   Rube rekao je

    Koliko će mi ovaj doprinos puno pomoći u digitalizaciji mojih bilješki, nadam se da će se poboljšati, razmišljam o funkciji za skeniranje kompletne datoteke i otkrivanje veličine skeniranog objekta, jer ovisimo o magici slike, može pretvoriti u djvu ili pdf i tako stvoriti jednu datoteku. Pa, samo sam provalio dalje. Hvala vam puno na doprinosu.

  3.   sviđa mi se rekao je

    Kakvo veliko zadovoljstvo, veliko hvala na razmjeni.