Skenirajte foto album s skriptom iz ukazne vrstice

Jasno je, da jih je več grafični vmesniki za skeniranje fotografij, ki ponujajo številne možnosti. Ko pa je število fotografij, ki jih je treba optično prebrati, veliko in če nimamo optičnega bralnika s samodejnim podajalnikom listov, postanejo težave težke. Na splošno morate za skeniranje klikniti, še en klik morda na drugem koncu okna, da shranite ... potreben je čas. Kakorkoli, dober izgovor za uporabo Ukazna vrstica.

To je prispevek Rubéna, ki je tako postal eden od zmagovalcev našega tedenskega natečaja: «Povejte, kaj veste o Linuxu«. Čestitamo Rubén!

Prebrala sem članke o Serijska obdelava slik z GIMP y Kako manipulirati s slikami s terminala, ravno tisti dan, ko me je prijatelj Huguito prosil za fotografije (ki jih je izgubil) potovanja, ki smo ga opravili leta 1989 ... (4 zvitki 36 fotografij! in na papirju seveda 🙂. Na ta nasvet me je spomnil na skeniranje fotografij da sem pozabil.

Ideja je, da uporabite skript, da to storite čim hitreje:

1. - Na optični bralnik položite fotografijo
2. - Za skeniranje pritisnite katero koli tipko
3. - Ponovite postopek, razen če je pritisnjena tipka na primer 'n' za izhod
4. - Fotografije bodo shranjene in oštevilčene v vnaprej določenem podimeniku.

Kakšen ukaz?

Ukaz 'magic' je scanimage, ki je del SANE. SANE je API, ki zagotavlja standardiziran dostop do katere koli slikovne naprave. API Sane je v javni domeni in njegova izvorna koda je na voljo pod splošno javno licenco GNU.

Namestitev je preprosta. Vsaka distribucija prinese svoje pakete. Za Ubuntu (ali njegove izpeljanke) je dovolj, da uporabimo sinaptik in namestimo zdrave in zdrave umre.

Kako uporabiti?

Kako vedno je najbolje napisati v terminalu "man scanimage". Vendar bomo povzeli možnosti, ki jih bomo uporabili.

Odpremo terminal in zaženemo scanimage -L, da si ogledamo razpoložljive naprave:

skenirana slika -L

V mojem primeru se vrne:

naprava `xerox_mfp: libusb: 001: 005 'je večfunkcijska periferna enota SAMSUNG ORION

To je rezultat, ki mi ga je dal z mojim večnamenskim modelom Samsung SCX-4200. Če imate večnamensko napravo in naprave ne najdete, preverite, ali tiskalnik ni aktiven, na primer s čakajočim tiskom.

Vrednost 'xerox_mfp: libusb: 001: 003' se z možnostjo -d uporablja za ukaz optičnega branja, katero napravo naj uporabi. Če je priključen samo en optični bralnik, ta možnost ni potrebna.

Ko ukaz scanimage optično prebere, pošlje nastalo sliko na standardni izhod v obliki pnm ali tiff. Torej za skeniranje izhod preusmerimo v datoteko. Če želimo videti, katera sporočila daje ukaz, dodamo možnost -v. Če želimo videti tudi odstotek napredka operacije, dodamo možnost -p.

scanimage -v -p> image.tiff

scanimage: optično branje slike velikosti 1284 x 1734 slikovnih pik pri 24 bitov / slikovnih pik
scanimage: pridobivanje okvirja RGB
scanimage: najnižja / največja vrednost sive stopnje = 69/255
scanimage: skupaj prebere 6679368 bajtov
Napredek: 13.8%

Kaj nam bo prineslo, če bomo naredili pomoč za skeniranje? Zdi se očitno, pomaga pri ukazu. Toda ta ukaz ima posebnost. Na koncu splošne pomoči za ukaz dodajte posebne parametre, ki jih vaš optični bralnik sprejme.

scanimage -pomoč

Uporaba: scanimage [OPTION] ...

BLA bla ....

Možnosti, specifične za napravo `xerox_mfp: libusb: 001: 005 ':

standard:
--resolution 75 | 100 | 150 | 200 | 300 | 600 dpi [150] Nastavi ločljivost optično prebrane slike.
--mode Lineart | Halftone | Grey | Color [Color] Izbere način optičnega branja (npr. lineart, enobarvni ali barvni).
--highlight 30..70% (v korakih po 10) [neaktivno] Izberite minimalno svetlost, da dobite belo točko
--source Flatbed | ADF | Auto [Flatbed] Izbere vir optičnega branja (na primer podajalnik dokumentov).
Geometrija:
-l 0..215.9 mm (v korakih po 1) [0] Zgornji levi x položaj območja skeniranja.
-t 0..297.18 mm (v korakih po 1) [0] Zgoraj levo in položaj območja optičnega branja.
-x 0..215.9 mm (v korakih po 1) [215.9] Širina območja skeniranja.
-y 0..297.18 mm (v korakih po 1) [297.18] Višina območja skeniranja.

Vnesite "scanimage --help -d NAPRAVA", da dobite seznam vseh možnosti za NAPRAVO.

Seznam razpoložljivih naprav:

xerox_mfp: libusb: 001: 005

Od tu lahko izbiramo možnosti z vrednostmi, ki jih lahko uporabimo.

Primer:

Resolucija

–Rezolucija 150

modo

–Mod Barva

Zdaj geometrija. To je zelo koristno, ker lahko optičnemu bralniku naročimo, da izvleče samo sliko sektorja (kamor bomo postavili fotografijo), in prihranimo čas skeniranja preostale površine, ki bi jo morali kasneje tudi odrezati z grafičnim urejevalnikom, kot je kot Gimp.

-l 0 začne skenirati vodoravno od 0 mm od zgornjega levega kota optičnega bralnika

-t 0 začne skenirati navpično od 0 mm od zgornjega levega kota optičnega bralnika

Upoštevajte, da sem se odločil, da fotografijo postavim v kot optičnega bralnika [koordinate (0,0)], saj jo je lažje namestiti. Na mojem optičnem bralniku (velikost A4) lahko preklopim od 0 do 215.9 in t od 0 do 297.18.

Širina in višina fotografije. V mojem primeru so fotografije velikosti 13x18cm:

-x 180 šir

-in 130 visoko

Zato bo optično prebral le tisti del, kamor smo dali svojo fotografijo. Seveda, če se strinjamo, kaj je levo, desno, širina, višina, zgornji in spodnji del. Odvisno od tega, kako gledate na optični bralnik. Predlagam, da preizkusite koordinate in jih prilagodite svojim potrebam.

Primer ukaza bi lahko bil:

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

S temi možnostmi bi že lahko zgradili svoj skript.

Toda preden ...

Tiff ali pnm sta nestisnjeni obliki, zato bodo naše fotografije zavzele ogromno prostora na disku. Tu je na voljo ukaz za pretvorbo ImageMagick, ki je razložen v poglavju Kako ravnati s slikami s terminala.

Če dobimo image.pnm iz optičnega bralnika, ga lahko pretvorimo v jpg:

pretvori image.pnm image.jpg

Pred tem pa še trik:

Image.pnm zavzame veliko prostora in ga moramo izbrisati, ko dobimo image.jpg. Obstaja možnost za ukaz convert, tako da bo namesto, da bi datoteko vzel z diska, neposredno pretvoril standardni vhod. To se izvede s pomišljajem - namesto z datoteko:

pretvori - image.jpg

Ker scanimage pripelje optično prebrano sliko na standardni izhod, naredimo "cevovod" in prihranimo čas obdelave, potreben za pisanje in nato brisanje datoteke image.pnm z diska.

scanimage -d xerox_mfp: libusb: 001: 003 -p --mode Barva - resolucija 150 -l 0 -t 0 -x 180 -y 130 | pretvori - image.jpg

Zdaj ja, scenarij ...

V datoteko, ki jo bomo poklicali scan-album.sh, zapišemo naslednjo kodo in ji damo dovoljenje za izvajanje. Ko ga zaženemo, bo ustvaril podimenik, v katerem bodo naše optično prebrane fotografije. Ne pozabite spremeniti vrednosti parametrov glede na vaše potrebe.

Po scenariju preberite nekaj predlogov.

#! / Bin / bash
# Podatki za možnosti

VERBOSE = "" # glej sporočilo o stanju: "" ni; "-v" je da
PROGRESS = "- p" # show progress "" ni; "-p" je da

# Scanimage --help za optični bralnik poda naslednje parametre
#Naprava: Če je samo en optični bralnik, ni potreben, postavite DEV = ""
# DEV = "xerox_mfp: libusb: 001: 003"

DEV = ""
MODE = "- način Barva"
RESOLUCIJA = "- ločljivost 600 dpi"

#geometry, npr. 130x180 mm fotografija
#location v zgornjem levem optičnem bralniku

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

#opcije:

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

# vsi parametri skupaj:

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

# Ime albuma. Ustvarite podimenik z vašim imenom:

ALBUM = "Prazniki_1989"

# Zaradi varnosti ne storim ničesar, če imenik že obstaja

mkdir $ ALBUM

če ["$?" = "1"]; potem
izhod 100
fi

# Osnovno ime za fotografije (v poddir)

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

vprašanje funkcije () {
vrgel ven "----------------------------------------------- - ------------------------- "
echo
vrgel "******************************"
echo "Število optično prebranih fotografij:" "$ I"
vrgel "******************************"
echo -e "Pritisnite: n * n za izhod * Druga tipka za skeniranje."
echo
read -s -n1 -p "Skenirati novo fotografijo?" pritisk na tipko
echo
}

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

# Začni

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

I = 0

vprašati

while ["$ keypress"! = "n"]; naredi
# nova fotografija za skeniranje
naj bo "I + = 1"
IME = $ FILE $ I
scanimage $ PARAMETRI | pretvori - $ NAME.jpg
vprašati
opravljeno

Predlogi

Uporaba visokih ločljivosti, kot so tiste v primeru, omogoča veliko počasnejše optično branje.

Upoštevajte, da če želite fotografijo natisniti na papir, potrebujete približno 250 pik na palec. Če je ideja optičnega branja fotografij natisniti v enaki velikosti kot izvirnik, zadostuje ločljivost 250. Za ogled na monitorju je dovolj 100. Višja ločljivost bi služila za povečavo.

Niz fotografij je treba pripraviti vnaprej, tako da je vsaka fotografija na desni strani. Na ta način ne boste izgubljali časa z vstavljanjem v optični bralnik, da se ne bodo zasukali za 180º.

Pri umerjanju meritev geometrijskih parametrov je priporočljivo opazovati, v kateri položaj postaviti original, tako da digitalne slike ne bodo "obrnjene na glavo". V mojem primeru gre spodnji del fotografije vzdolž osi 'l'.

Če imate priključen samo en optični bralnik, ne uporabljajte možnosti -d. V skriptu je DEV = »»

Včasih se številke v "xerox_mfp: libusb: 001: 003" spremenijo in jih boste morali spremeniti vsakič, ko uporabite skript.

Pri kopiranju skripte bodite pozorni na vezaje in citate. Vezaji (znak minus) so lahko ena ali dve skupaj, odvisno od možnosti; narekovaji so dvojnik tipkovnice in niso tisti, ki jih postavljajo nekateri urejevalniki besedil, kot je LibreOffice.

Zaradi varnosti skript ne ustvari imenika, če že obstaja, da ne bi prepisoval datotek, če obstajajo. V tem primeru se ustavi.

Če je foto album star, ne obžalujte, če imajo slike obilico las, manjkajo gube ali kilogrami: -


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   Mladinci Calderon je dejal

    Vau! Kako dober tuto!
    Nisem si mislil, da bi bilo z bash xD mogoče narediti toliko stvari
    Vsak dan se naučiš več!
    Hvala za vložek!
    Nimam skenerja, če pa ga dobim, ga takoj poskusim 🙂

  2.   Rube je dejal

    Kako dobro mi bo ta prispevek veliko pomagal pri digitalizaciji zapiskov, upam, da se bo izboljšal, razmišljam o funkciji za skeniranje celotne datoteke in zaznavanje velikosti optično prebranega predmeta, saj smo odvisni od magije slike, lahko pretvori v djvu ali pdf in tako ustvari eno datoteko. No, samo pohajkoval sem se. Najlepša hvala za prispevek.

  3.   všeč mi je je dejal

    Kakšno veliko veselje, najlepša hvala za delitev.