Naskenujte fotoalbum pomocou skriptu z príkazového riadku

Je ich zjavne niekoľko grafické rozhrania na skenovanie fotografií, ktoré poskytujú veľa možností. Ale keď je počet skenovaných fotografií vysoký a nemáme skener s automatickým podávačom listov, situácia sa zhoršuje. Spravidla musíte kliknúť na skenovanie, ďalšie kliknúť možno na druhom konci okna, aby ste uložili ... chce to čas. Každopádne, dobrá výhovorka na použitie Príkazový riadok.

Toto je príspevok Rubénu, ktorý sa stal jedným z víťazov našej týždennej súťaže: «Podeľte sa o to, čo viete o systéme Linux«. Gratulujem Rubén!

Čítal som články o Dávkové spracovanie obrazu s GIMP y Ako manipulovať s obrázkami z terminálu, práve v deň, keď ma môj priateľ Huguito požiadal o fotografie (ktoré stratil) z výletu, ktorý sme absolvovali v roku 1989 ... (4 kotúče s 36 fotografiami! a samozrejme na papieri 🙂. Pripomenulo mi to tento tip na skenovanie fotky, ktoré som zabudol.

Cieľom je použiť skript, aby ste to dosiahli čo najrýchlejšie:

1. - Vložte fotografiu do skenera
2. - Stlačením ľubovoľnej klávesy skenujete
3. - Opakujte postup, pokiaľ stlačené tlačidlo nie je napríklad na ukončenie
4.- Fotografie sa uložia a očíslujú do vopred vytvoreného podadresára.

Aký príkaz?

Príkaz „mágia“ je scanimage, ktorý je súčasťou programu SANE. SANE je API, ktoré poskytuje štandardizovaný prístup k ľubovoľnému zobrazovaciemu zariadeniu. Sane API je voľným dielom a jeho zdrojový kód je k dispozícii pod GNU General Public License.

Inštalácia je jednoduchá. Každá distribúcia prináša svoje balíčky. Pre Ubuntu (alebo jeho deriváty) stačí použiť synaptický a nainštalovať sane a sane-utils.

Ako použiť?

Najlepšie je vždy písať do terminálu 'man scanimage'. Zhrnieme však možnosti, ktoré použijeme.

Otvoríme terminál a spustíme program scanimage -L, aby sme videli dostupné zariadenia:

scanimage -L

V mojom prípade sa vráti:

zariadenie `xerox_mfp: libusb: 001: 005 'je multifunkčné periférie SAMSUNG ORION

Toto je výsledok, ktorý mi priniesol môj multifunkčný prístroj Samsung SCX-4200. Ak máte multifunkčné zariadenie a nemôžete zariadenie nájsť, uistite sa, že tlačiareň nie je aktívna, napríklad s nespracovanou tlačou.

Hodnota „xerox_mfp: libusb: 001: 003“ sa používa na informovanie príkazu scanimage, ktoré zariadenie má použiť, pomocou voľby -d. Ak je pripojený iba jeden skener, táto možnosť nie je potrebná.

Pri skenovaní príkazu scanimage odošle výsledný obrázok na štandardný výstup vo formáte pnm alebo tiff. Na skenovanie teda presmerujeme výstup do súboru. A ak chceme vidieť, aké správy dáva príkaz, pridáme voľbu -v. Ak chceme vidieť aj percento priebehu operácie, pridáme voľbu -p.

scanimage -v -p> image.tiff

scanimage: skenovanie obrázka s veľkosťou 1284x1734 pixelov pri 24 bitoch / pixel
scanimage: získanie rámca RGB
skenovací obrázok: minimálna / maximálna hodnota úrovne šedej = 69/255
scanimage: prečítať spolu 6679368 bajtov
Pokrok: 13.8%

Čo nám dá, ak skenujeme - pomôžeme? Zdá sa to zrejmé, poskytuje pomoc na povel. Ale tento príkaz má zvláštnosť. Na konci všeobecnej pomoci pre príkaz pridajte konkrétne parametre, ktoré váš skener akceptuje.

scanimage - pomoc

Použitie: scanimage [OPTION] ...

BLA bla ....

Možnosti špecifické pre zariadenie `xerox_mfp: libusb: 001: 005 ':

štandard:
--rozlíšenie 75 | 100 | 150 | 200 | 300 | 600 dpi [150] Nastaví rozlíšenie skenovaného obrázka.
--mód Lineart | Poltón | Šedá | Farba [Color] Vyberie režim skenovania (napr. lineart, monochromatický alebo farebný).
--výraz 30–70% (v krokoch po 10) [neaktívne] Vyberte minimálny jas, aby ste získali biely bod
--source Flatbed | ADF | Auto [Flatbed] Vyberie zdroj skenovania (napríklad podávač dokumentov).
geometria:
-l 0..215.9 mm (v krokoch po 1) [0] Vľavo hore x poloha oblasti skenovania.
-t 0..297.18 mm (v krokoch po 1) [0] Vľavo hore a poloha oblasti skenovania.
-x 0..215.9 mm (v krokoch po 1) [215.9] Šírka skenovanej oblasti.
-y 0..297.18 mm (v krokoch po 1) [297.18] Výška skenovanej oblasti.

Zadaním výrazu „scanimage --help -d DEVICE“ zobrazíte zoznam všetkých možností pre zariadenie DEVICE.

Zoznam dostupných zariadení:

xerox_mfp: libusb: 001: 005

Odtiaľto si môžeme vybrať možnosti s hodnotami, ktoré môžeme použiť.

príklad:

Riešenie

–Rozlíšenie 150

modo

–Farebný režim

Teraz geometria. To je veľmi užitočné, pretože môžeme povedať skeneru, aby extrahoval iba obrázok sektoru (kam umiestnime fotografiu), a ušetríte čas skenovania zvyšku povrchu, ktorý by sme neskôr mali tiež rezať grafickým editorom, ako je napríklad ako Gimp.

-l 0 začne skenovať vodorovne od 0 mm od ľavého horného rohu skenera

-t 0 začne skenovať vertikálne od 0 mm od ľavého horného rohu skenera

Upozorňujeme, že som sa rozhodol umiestniť fotografiu do rohu skenera [súradnice (0,0)], pretože je ľahšie ju umiestniť. Na mojom skeneri (veľkosť A4) môžem ísť z 0 na 215.9 at z 0 na 297.18.

Šírka a výška fotografie. V mojom prípade sú fotky 13x18cm:

-x šírka 180

-a 130 vysokých

Preto naskenuje iba časť, kam sme vložili našu fotografiu. Samozrejme, ak sa zhodneme na tom, čo je ľavá, pravá, šírka, výška, vrch a spodok. Bude to závisieť od toho, ako sa na svoj skener pozeráte. Navrhujem otestovať súradnice a prispôsobiť ich vašim potrebám.

Príkladom príkazu môže byť:

scanimage -d xerox_mfp: libusb: 001: 003 -p - režim Farba - rozlíšenie 150 -l 0 -t 0 -x 180 -y 130> image.pnm

Vďaka týmto možnostiam by sme už mohli vytvoriť náš skript.

Ale predtým ...

Tiff alebo pnm sú nekomprimované formáty, takže naše fotografie zaberú obrovské miesto na disku. To je miesto, kde prichádza príkaz ImageMagick convert, ktorý je vysvetlený v Ako manipulovať s obrázkami z terminálu.

Ak dostaneme zo skenera súbor image.pnm, môžeme ho previesť na jpg:

previesť image.pnm image.jpg

Predtým však urobte ďalší trik:

Súbor Image.pnm zaberá veľa miesta a po získaní súboru image.jpg by sme ho mali odstrániť. Pre príkaz convert existuje možnosť, aby namiesto prevzatia súboru z disku priamo konvertoval štandardný vstup. To sa dosiahne pomlčkou - namiesto súboru:

prevádzať - image.jpg

Pretože program scanimage dodáva naskenovaný obrázok na štandardný výstup, urobíme „pipeline“ a ušetríme čas potrebný na zápis a následné odstránenie súboru image.pnm z disku.

scanimage -d xerox_mfp: libusb: 001: 003 -p - režim Farba - rozlíšenie 150 -l 0 -t 0 -x 180 -y 130 | prevádzať - image.jpg

Teraz áno, scenár ...

Nasledujúci kód napíšeme do súboru, ktorý nazveme scan-album.sh a dáme mu povolenie na vykonávanie. Keď ho spustíme, vytvorí sa podadresár, kde budú naše naskenované fotografie. Nezabudnite upraviť hodnoty parametrov podľa svojich potrieb.

Nezabudnite si prečítať niekoľko návrhov po skripte.

#! / Bin / bash
# Údaje pre možnosti

VERBOSE = "" # pozri stavovú správu: "" nie je; „-v“ je áno
PROGRESS = "- p" # zobraziť pokrok "" je nie; „-p“ je áno

# Nasledujúce parametre poskytuje program scanimage --help pre váš skener
#Zařízení: Ak existuje iba jeden skener, nie je to potrebné, vložte DEV = ""
# DEV = "xerox_mfp: libusb: 001: 003"

DEV = ""
MODE = "- farebný režim"
RESOLUTION = "- rozlíšenie 600 dpi"

#geometry, napr. fotografia s rozmermi 130 x 180 mm
# umiestnenie v ľavom hornom vrcholovom skeneri

x0 = 0
y0 = 0
šírka = 180
vysoká = 130

#možnosti:

L = "- l $ x0"
T = "- t $ y0"
WIDTH = "- x $ šírka"
HIGH = "- a $ high"

# všetky parametre spolu:

PARAMETRE = "$ DEV $ VERBÓZA $ POKROK $ REŽIM $ ROZLIŠENIE $ L $ T $ ŠÍRKA $ VYSOKÁ"

# Názov albumu. Vytvorte podadresár so svojím menom:

ALBUM = "Prázdniny_1989"

# Z bezpečnostných dôvodov nerobím nič, ak adresár už existuje

mkdir $ ALBUM

ak [„$?“ = "1"]; potom
výstup 100
fi

# Základný názov pre fotografie (v podadresári)

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

funkčná otázka () {
zahodil "----------------------------------------------- - ------------------------- "
minúť
zahodil "******************************"
echo "Počet naskenovaných fotografií:" "$ I"
zahodil "******************************"
echo -e "Stlačením: n * n ukončíte * Ďalšia klávesa na skenovanie."
minúť
read -s -n1 -p "Naskenovať novú fotografiu?" stlačenie klávesy
minúť
}

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

# Štart

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

I = 0

otázka

while ["$ keypress"! = "n"]; robiť
# nová fotografia na skenovanie
nech „I + = 1“
NÁZOV = $ SÚBOR $ I
scanimage $ PARAMETRE | prevádzať - $ NAME.jpg
otázka
vykonané

Návrhy

Použitie vysokých rozlíšení, ako sú tie v príklade, robí skenovanie oveľa pomalšie.

Majte na pamäti, že ak chcete tlačiť fotografiu na papier, potrebujete asi 250 bodov na palec. Ak chcete skenovať fotografie tak, že ich vytlačíte v rovnakej veľkosti ako originál, stačí rozlíšenie 250. Ak ich chcete vidieť na monitore so 100, stačí ich vidieť. Vyššie rozlíšenie by slúžilo na zväčšenie.

Hromada fotografií by mala byť pripravená vopred, aby každá fotografia bola na pravej strane. Takto nebudete strácať čas vkladaním do skenera, aby sa neotáčali o 180 °.

Pri kalibrácii meraní parametrov geometrie je vhodné sledovať, do ktorej polohy umiestniť originál, aby digitálne obrázky neboli „hore nohami“. V mojom prípade ide spodná časť fotografie pozdĺž osi „l“.

Ak máte pripojený iba jeden skener, voľbu -d nepoužívajte. V scenári je to DEV = »»

Niekedy sa čísla v „xerox_mfp: libusb: 001: 003“ menia a pri každom použití skriptu ich budete musieť upraviť.

Pri kopírovaní skriptu dávajte pozor na pomlčky a úvodzovky. Pomlčky (znamienko mínus) môžu byť v závislosti od možnosti dve alebo dve spolu; úvodzovky sú dvojnásobkom klávesnice, nie sú to tie, ktoré vložili niektoré textové procesory ako LibreOffice.

Kvôli bezpečnosti skript nevytvorí adresár, ak už existuje, aby súbory neprepísal, ak nejaké existujú. V takom prípade to prestane.

Ak je fotoalbum starý, neľutujte, ak majú obrázky bohaté vlasy, vrásky alebo kilogramy: -


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   Juniori Calderon dijo

    Wow! Aká dobrá táto!
    Nemyslel som si, že s bash xD sa dá urobiť toľko vecí
    Každý deň sa dozviete viac!
    Ďakujeme za príspevok!
    Scaner nemám, ale ak si ho zaobstarám, okamžite ho vyskúšam 🙂

  2.   Rube dijo

    Ako dobre mi tento príspevok pomôže pri digitalizácii mojich poznámok, dúfam, že sa to zlepší, myslím na funkciu skenovania celého súboru a zisťovania veľkosti skenovaného objektu, keďže sme závislí od magickej kvality obrázku, previesť na djvu alebo pdf a vytvoriť tak jeden súbor. No len som sa túlal ďalej. Dakujem pekne za prispevok.

  3.   Ahoj Ello dijo

    Aké veľké potešenie, ďakujem veľmi pekne za zdieľanie.