Naskenujte fotoalbum pomocí skriptu z příkazového řádku

Je jasné, že jich je několik grafická rozhraní pro skenování fotografií, které poskytují četné možnosti. Ale když je počet fotografií, které mají být naskenovány, velký a nemáme skener s automatickým podavačem listů, věci se zhoršují. Obecně musíte skenovat kliknutím, dalším kliknutím možná na druhém konci okna se uloží ... vyžaduje to čas. Každopádně, dobrá výmluva k použití Příkazový řádek.

Toto je příspěvek Rubénu, který se tak stal jedním z vítězů naší týdenní soutěže: «Sdílejte, co víte o Linuxu«. Gratuluji Rubén!

Přečetl jsem si články o Dávkové zpracování obrazu s GIMP y Jak manipulovat s obrázky z terminálu, právě v den, kdy mě můj přítel Huguito požádal o fotografie (které ztratil) z cesty, kterou jsme podnikli v roce 1989 ... (4 role po 36 fotografiích! a samozřejmě na papíře 🙂. Připomnělo mi to tip na skenování fotky, které jsem zapomněl.

Cílem je použít skript, aby to bylo co nejrychlejší:

1. - Vložte fotografii do skeneru
2. - Stisknutím libovolné klávesy proveďte skenování
3. - Opakujte postup, pokud není stisknuté tlačítko například „n“ pro ukončení
4.- Fotografie budou uloženy a očíslovány do předem vytvořeného podadresáře.

Jaký příkaz?

Příkaz „magic“ je scanimage, který je součástí SANE. SANE je API, které poskytuje standardizovaný přístup k jakémukoli zobrazovacímu zařízení. Sane API je ve veřejné doméně a jeho zdrojový kód je k dispozici pod GNU General Public License.

Instalace je jednoduchá. Každá distribuce přináší své balíčky. Pro Ubuntu (nebo jeho deriváty) stačí použít synaptický a nainstalovat sane a sane-utils.

Jak používat?

Nejlepší je vždy psát do terminálu „man scanimage“. Shrneme však možnosti, které použijeme.

Otevřeme terminál a spustíme scanimage -L, abychom viděli dostupná zařízení:

scanimage -L

V mém případě se vrátí:

zařízení `xerox_mfp: libusb: 001: 005 'je multifunkční periferie SAMSUNG ORION

To je výsledek, který mi dal můj multifunkční přístroj Samsung SCX-4200. Pokud máte MFP a nemůžete zařízení najít, ujistěte se, že tiskárna není aktivní, například s nevyřízeným tiskem.

Hodnota 'xerox_mfp: libusb: 001: 003' se používá k určení příkazu scanimage, které zařízení má použít, pomocí volby -d. Pokud je připojen pouze jeden skener, není tato možnost nutná.

Při skenování příkazu scanimage odešle výsledný obrázek na standardní výstup ve formátu pnm nebo tiff. Abychom skenovali, přesměrujeme výstup do souboru. A pokud chceme vidět, jaké zprávy příkaz dává, přidáme možnost -v. Pokud také chceme vidět procento průběhu operace, přidáme možnost -p.

scanimage -v -p> image.tiff

scanimage: skenování obrazu o velikosti 1284x1734 pixelů při 24 bitech / pixel
scanimage: získání rámečku RGB
scanimage: min / max hodnota úrovně šedi = 69/255
scanimage: přečíst celkem 6679368 bajtů
Pokrok: 13.8%

Co nám dá, když naskenujeme obraz - pomůžeme? Zdá se to zřejmé, poskytuje pomoc s příkazem. Ale tento příkaz má jednu zvláštnost. Na konci obecné nápovědy k příkazu přidejte konkrétní parametry, které váš skener přijímá.

scanimage - nápověda

Použití: scanimage [MOŽNOST] ...

BLA bla ....

Možnosti specifické pro zařízení `xerox_mfp: libusb: 001: 005 ':

Standard:
- rozlišení 75 | 100 | 150 | 200 | 300 | 600 dpi [150] Nastaví rozlišení skenovaného obrázku.
--mode Lineart | Polotón | Šedá | Barva [Barva] Vybere režim skenování (např. lineart, monochromatický nebo barevný).
- zvýraznit 30..70% (v krocích po 10) [neaktivní] Vyberte minimální jas, abyste získali bílý bod
--source Flatbed | ADF | Auto [Flatbed] Vybere zdroj skenování (například podavač dokumentů).
geometrie:
-l 0..215.9 mm (v krocích po 1) [0] Vlevo nahoře x poloha oblasti skenování.
-t 0..297.18 mm (v krocích po 1) [0] Vlevo nahoře a poloha oblasti skenování.
-x 0..215.9 mm (v krocích po 1) [215.9] Šířka oblasti skenování.
-y 0..297.18 mm (v krocích po 1) [297.18] Výška oblasti skenování.

Zadejte `` scanimage --help -d DEVICE '', abyste získali seznam všech možností pro DEVICE.

Seznam dostupných zařízení:

xerox_mfp: libusb: 001: 005

Odtud můžeme vybrat možnosti s hodnotami, které můžeme použít.

příklad:

Řešení

–Resoluce 150

Modo

– Barva režimu

Nyní geometrie. To je velmi užitečné, protože můžeme skeneru říct, aby extrahoval pouze obraz jednoho sektoru (kam umístíme fotografii), a ušetříme čas skenování zbytku povrchu, který bychom měli později oříznout pomocí grafického editoru, jako je jako Gimp.

-l 0 začne skenovat vodorovně od 0 mm od levého horního rohu skeneru

-t 0 začne skenovat svisle od 0 mm od levého horního rohu skeneru

Všimněte si, že jsem se rozhodl umístit fotografii do rohu skeneru [souřadnice (0,0)], protože je jednodušší ji umístit. Na mém skeneru (velikost A4) můžu přejít z 0 na 215.9 at z 0 na 297.18.

Šířka a výška fotografie. V mém případě jsou fotografie 13x18cm:

-x šířka 180

-a 130 vysoký

Proto bude skenovat pouze část, kam jsme vložili naši fotografii. Samozřejmě, pokud se shodneme na tom, co je vlevo, vpravo, šířka, výška, horní a dolní část. Záleží na tom, jak se na svůj skener podíváte. Navrhuji otestovat souřadnice a upravit je podle vašich potřeb.

Příkladem příkazu může být:

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

S těmito možnostmi jsme již mohli vytvořit náš skript.

Ale předtím…

Tiff nebo pnm jsou nekomprimované formáty, takže naše fotografie zaberou obrovské místo na disku. Zde přichází příkaz převést ImageMagick, který je vysvětlen v Jak manipulovat s obrázky z terminálu.

Pokud ze skeneru získáme soubor image.pnm, můžeme jej převést na jpg:

převést image.pnm image.jpg

Ale než to uděláte, další trik:

Image.pnm zabírá hodně místa a měli bychom jej po získání našeho image.jpg odstranit. Existuje příkaz pro převod příkazu, takže místo převzetí souboru z disku bude přímo převádět standardní vstup. Toho je dosaženo pomlčkou - místo souboru:

převést - image.jpg

Vzhledem k tomu, že program scanimage poskytuje naskenovaný obrázek na standardní výstup, vytvoříme „kanál“ a ušetříme čas potřebný k zápisu a následnému odstranění souboru image.pnm z disku.

scanimage -d xerox_mfp: libusb: 001: 003 -p - režim Barva - rozlišení 150 -l 0 -t 0 -x 180 -y 130 | převést - image.jpg

Nyní ano, scénář ...

Napíšeme následující kód do souboru, který budeme nazývat scan-album.sh a udělíme mu oprávnění ke spuštění. Když jej spustíme, vytvoří podadresář, kde budou naše naskenované fotografie. Nezapomeňte upravit hodnoty parametrů podle svých potřeb.

Po skriptu si přečtěte několik návrhů.

#! / bin / bash
# Údaje pro možnosti

VERBOSE = "" # viz stavová zpráva: "" není; „-v“ je ano
PROGRESS = "- p" # ukázat pokrok "" je ne; „-p“ je ano

# Následující parametry jsou dány programem scanimage --help pro váš skener
# Zařízení: Pokud existuje pouze jeden skener, není to nutné, vložte DEV = ""
# DEV = "xerox_mfp: libusb: 001: 003"

DEV = ""
MODE = "- režim Barva"
RESOLUTION = "- rozlišení 600dpi"

#geometry, např. fotografie 130 x 180 mm
#location in the top left vertex scanner

x0 = 0
y0 = 0
šířka = 180
vysoká = 130

# možnosti:

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

# všechny parametry společně:

PARAMETRY = "$ DEV $ VERBOSE $ POKROK $ MODE $ ROZLIŠENÍ $ L $ T $ ŠÍŘKA $ HIGH"

# Název alba. Vytvořte podadresář se svým jménem:

ALBUM = "Prázdniny_1989"

# Z bezpečnostních důvodů nedělám nic, pokud adresář již existuje

mkdir $ ALBUM

pokud [„$?“ = "1"]; pak
výjezd 100
fi

# Základní název pro fotografie (v podadresáři)

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

funkční otázka () {
vyhodil "----------------------------------------------- - ------------------------- "
minout
vyhodil "******************************"
echo "Počet naskenovaných fotografií:" "$ I"
vyhodil "******************************"
echo -e "Stiskněte: n * n pro ukončení * Další klávesa pro skenování."
minout
read -s -n1 -p "Naskenovat novou fotografii?" stisknutí klávesy
minout
}

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

# Start

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

I = xnumx

otázka

while ["$ keypress"! = "n"]; dělat
# nová fotka ke skenování
nechť „I + = 1“
JMÉNO = $ SOUBOR $ I
scanimage $ PARAMETRY | převést - $ NAME.jpg
otázka
hotový

Návrhy

Použití vysokých rozlišení, jako jsou v příkladu, činí skenování mnohem pomalejší.

Pamatujte, že pokud chcete tisknout fotografie na papír, potřebujete přibližně 250 bodů na palec. Pokud je myšlenkou skenování fotografií tisknout je ve stejné velikosti jako originál, stačí rozlišení 250. Chcete-li je vidět na monitoru se 100, stačí. Vyšší rozlišení by sloužilo ke zvětšení.

Stoh fotografií by měl být připraven předem, aby každá fotografie byla na pravé straně. Tímto způsobem nebudete ztrácet čas jeho vkládáním do skeneru, aby se neotočily o 180 °.

Při kalibraci měření parametrů geometrie je vhodné sledovat, do jaké polohy musí být originál umístěn, aby digitální obrazy nebyly „vzhůru nohama“. V mém případě jde spodní část fotografie podél osy „l“.

Pokud máte připojený pouze jeden skener, možnost -d nepoužívejte. Ve skriptu je to DEV = »»

Někdy se čísla v „xerox_mfp: libusb: 001: 003“ mění a budete je muset upravit při každém použití skriptu.

Při kopírování skriptu dávejte pozor na pomlčky a uvozovky. Pomlčky (znaménko minus) mohou být jedna nebo dvě společně, v závislosti na možnosti; uvozovky jsou dvojnásobkem klávesnice, nejsou to ty, které uvádějí některé textové procesory jako LibreOffice.

Z bezpečnostních důvodů skript nevytvoří adresář, pokud již existuje, aby nedošlo k přepsání souborů, pokud nějaké existují. V takovém případě se zastaví.

Pokud je fotoalbum staré, nelitujte, pokud mají obrázky bohaté vlasy, vrásky nebo kilogramy: -


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   Junioři Calderon řekl

    Wow! Jaká dobrá tato!
    Nemyslel jsem si, že s bash xD se dá dělat tolik věcí
    Každý den se dozvíte více!
    Díky za vstup!
    Nemám Scaner, ale pokud si ho pořídím, okamžitě to zkusím 🙂

  2.   Rube řekl

    Jak dobře mi tento příspěvek pomůže při digitalizaci mých poznámek, doufám, že se zlepší, myslím na funkci pro skenování celého souboru a detekci velikosti skenovaného objektu, protože jsme závislí na magii obrazu, může převést na djvu nebo pdf a vytvořit tak jeden soubor. Jen jsem se potuloval dál. Moc děkuji za příspěvek.

  3.   Ahoj Ello řekl

    Jaké velké potěšení, děkuji vám za sdílení.