Szkenneljen fényképalbumot egy parancsfájl segítségével a parancssorból

Nyilvánvalóan több is van grafikus interfészek a fényképek beolvasásához, amelyek számos lehetőséget kínálnak. De amikor a beolvasandó fényképek száma nagy, és nincs automatikus lapadagolóval ellátott szkennerünk, akkor a dolgok nehézzé válnak. Általánosságban egy kattintás szükséges a beolvasáshoz, egy másik kattintás talán az ablak másik végén található a mentéshez ... időbe telik. Egyébként jó ürügy a Parancs sor.

Ez Rubén közreműködése, így a heti versenyünk egyik nyertese lett: «Ossza meg, mit tud a Linuxról«. Gratulálok Rubénnak!

Olvastam a cikkeket Kötegelt képfeldolgozás GIMP-vel y Hogyan lehet kezelni a képeket a terminálról, éppen azon a napon, amikor Huguito barátom elkért tőlem egy 1989-ben tett utazás fényképeit (amelyeket elveszített) (4 tekercs 36 fotóból! Természetesen papíron is). Erre a tippre emlékeztetett, hogy fényképeket szkenneljek hogy elfelejtettem.

Az ötlet az, hogy egy szkriptet használjon a lehető leggyorsabban:

1.- Tegyen egy fényképet a lapolvasóra
2.- Nyomjon meg bármelyik gombot a beolvasáshoz
3.- Ismételje meg az eljárást, kivéve, ha a lenyomott gomb például „n” a kilépéshez
4.- A fényképeket egy előre létrehozott alkönyvtárba menti és számozza.

Milyen parancs?

A „varázslat” parancs a SANE részét képező scanimage. A SANE egy API, amely szabványosított hozzáférést biztosít minden képalkotó eszközhöz. A Sane API nyilvános, forráskódja pedig a GNU General Public License alatt érhető el.

A telepítés egyszerű. Minden terjesztés hozza a csomagjait. Az Ubuntu (vagy annak származékai) számára elegendő a szinaptikus használat, és a józan és épeszű utilák telepítése.

Hogyan kell használni?

Mennyire mindig az a legjobb, ha terminálba írsz „ember keresési kép”. Összefoglaljuk azonban a használni kívánt lehetőségeket.

Megnyitunk egy terminált és futtatjuk a scanimage -L-t az elérhető eszközök megtekintéséhez:

szkennelési kép -L

Az én esetemben ez visszatér:

A `xerox_mfp: libusb: 001: 005 'eszköz egy SAMSUNG ORION többfunkciós periféria

Ezt az eredményt adta a Samsung SCX-4200 multifunkciós készülékemmel. Ha rendelkezik all-in-one készülékkel, és nem találja az eszközt, ellenőrizze, hogy a nyomtató nem aktív-e, például függőben lévő nyomtatással.

Az 'xerox_mfp: libusb: 001: 003' érték arra szolgál, hogy megadja a scanimage parancsnak, hogy mely eszközt használja a -d kapcsolaton keresztül. Ha csak egy szkenner van csatlakoztatva, akkor erre a lehetőségre nincs szükség.

Amikor a scanimage parancs beolvas, a kapott képet standard kimenetre küldi pnm vagy tiff formátumban. Tehát a beolvasáshoz átirányítjuk a kimenetet egy fájlba. És ha meg akarjuk nézni, hogy a parancs milyen üzeneteket küld, akkor hozzáadjuk a -v opciót. Ha meg akarjuk látni a művelet előrehaladásának százalékos arányát, akkor hozzáadjuk a -p opciót.

scanimage -v -p> image.tiff

scanimage: 1284x1734 pixel méretű kép beolvasása 24 bit / pixel sebességgel
scanimage: RGB keret megszerzése
scanimage: min / max szürke szint = 69/255
scanimage: olvassa el összesen 6679368 bájtot
Haladás: 13.8%

Mit ad nekünk, ha szkenneljük a képet - segítünk? Nyilvánvalónak tűnik, segítséget nyújt a parancshoz. De ennek a parancsnak van sajátossága. A parancs általános súgójának végén adja meg azokat a konkrét paramétereket, amelyeket a lapolvasó elfogad.

scanimage -help

Használat: scanimage [OPTION] ...

Bla bla....

A `xerox_mfp: libusb: 001: 005 'eszközre vonatkozó opciók:

alapértelmezett:
--resolution 75 | 100 | 150 | 200 | 300 | 600dpi [150] Beállítja a beolvasott kép felbontását.
--mode Lineáris | Féltónus | Szürke | Szín [Szín] Kiválasztja a szkennelési módot (pl. lineart, monokróm vagy színes).
--highlight 30..70% (10 lépésben) [inaktív] Válassza a minimális fényerőt, hogy fehér pontot kapjon
--source Flatbed | ADF | Auto [Flatbed] Kiválasztja a szkennelési forrást (például dokumentumadagolót).
geometria:
-l 0..215.9 mm (az 1. lépésben) [0] A szkennelési terület bal felső, x helyzete.
-t 0..297.18 mm (az 1. lépésben) [0] A szkennelési terület bal felső része és helyzete.
-x 0..215.9 mm (az 1. lépésben) [215.9] Szkennelési terület szélessége.
-y 0..297.18 mm (az 1. lépésben) [297.18] A beolvasási terület magassága.

Írja be a "scanimage --help -d DEVICE" parancsot a DEVICE összes opciójának felsorolásához.

Az elérhető eszközök listája:

xerox_mfp: libusb: 001: 005

Innen kiválaszthatjuk az opciókat az általunk használható értékekkel.

Példa:

felbontás

– 150-es megoldás

Modo

–Módszín

Most a geometria. Ez nagyon hasznos, mert azt mondhatjuk a szkennernek, hogy csak egy szektor képét vonja ki (ahová a fényképet elhelyezzük), és megtakarítjuk a felület többi részének beolvasásának idejét, amelyet később egy grafikus szerkesztővel is le kell vágnunk mint Gimp.

-l 0 a vízszintes szkennelést kezdi 0 mm-től a szkenner bal felső sarkától

A -t 0 függőlegesen kezdi el a szkennelést 0 mm-től a szkenner bal felső sarkától

Ne feledje, hogy a fényképet a szkenner sarkába tettem [koordináták (0,0)], mivel könnyebb elhelyezni. A szkenneremen (A4-es méret) 0-ról 215.9-re és t-ről 0-ról 297.18-ra mehetek.

A fénykép szélessége és magassága. Az én esetemben a képek 13x18 cm-esek:

-x 180 széles

-és 130 magas

Ezért csak azt a részt szkenneli, ahová a fényképünket tettük. Természetesen, ha egyetértünk abban, hogy mi a bal, a jobb, a szélesség, a magasság, a felső és az alsó. Attól függ, hogy nézi a szkennert. Azt javaslom, hogy tesztelje a koordinátákat, és állítsa be az Ön igényeinek.

A parancsra példa lehet:

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

Ezekkel a lehetőségekkel már felépíthetjük a szkriptünket.

De előtte…

A Tiff vagy a pnm tömörítetlen formátumok, ezért fényképeink hatalmas helyet foglalnak el a lemezen. Itt jön be az ImageMagick convert parancs, amelyet a képek kezelése a terminálról című részben ismertetünk.

Ha egy kép.pnm-t kapunk a szkennerből, konvertálhatjuk jpg-re:

image.pnm image.jpg konvertálása

De mielőtt ezt megtenné, egy másik trükk:

Az Image.pnm sok helyet foglal el, és az image.jpg megszerzése után törölnünk kell. Lehetőség van a convert parancsra, hogy ahelyett, hogy egy fájlt vegyen le a lemezről, az közvetlenül a standard bemenetet konvertálja. Ezt kötőjellel hajtják végre - a fájl helyett:

konvertálás - image.jpg

Mivel a scanimage a beolvasott képet normál kimenetre juttatja el, elkészítünk egy "folyamatot", és megtakarítjuk a feldolgozási időt, amely az image.pnm fájl megírásához, majd törléséhez szükséges.

scanimage -d xerox_mfp: libusb: 001: 003 -p --mode Color --resolution 150 -l 0 -t 0 -x 180 -y 130 | konvertálás - image.jpg

Most igen, a forgatókönyv ...

A következő kódot beírjuk egy fájlba, amelyet a scan-album.sh fájlnak hívunk, és végrehajtási engedélyt adunk neki. Amikor futtatjuk, létrehoz egy alkönyvtárat, ahol a beolvasott fotóink lesznek. Ne felejtse el módosítani a paraméterértékeket az Ön igényeinek megfelelően.

Ne felejtsen elolvasni néhány javaslatot a szkript után.

#! / bin / bash
# Adatok az opciókhoz

VERBOSE = "" # lásd az állapotüzenetet: "" nem; A "-v" igen
PROGRESS = "- p" # show progress "" nem; "-p" igen

# A következő paramétereket a scanimage --help adja meg a szkennerhez
#Device: Ha csak egy szkenner van, akkor nem szükséges, tegye a DEV = ""
# DEV = "xerox_mfp: libusb: 001: 003"

DEV = ""
MODE = "- mód Szín"
RESOLUTION = "- felbontás 600 dpi"

#geometria, pl. 130x180 mm-es fotó
#location a bal felső csúcsszkennerben

x0 = 0
y0 = 0
szélesség = 180
magas = 130

#lehetőségek:

L = "- l $ x0"
T = "- t $ y0"
WIDTH = "- x $ szélesség"
HIGH = "- és $ magas"

# összes paraméter együtt:

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

# Az album neve. Hozzon létre egy alkönyvtárat a nevével:

ALBUM = "Ünnepek_1989"

# A biztonság kedvéért nem teszek semmit, ha a könyvtár már létezik

mkdir $ ALBUM

ha ["$?" = "1"]; akkor
100. kijárat
fi

# Képek alapneve (alkönyvtárban)

FÁJL = "./" $ ALBUM "/" $ ALBUM "_foto_"

függvény kérdés () {
kidobta "----------------------------------------------- - ------------------------- "
visszhang
kidobta "*******************************"
echo "Beolvasott fényképek száma:" "$ I"
kidobta "*******************************"
echo -e "Nyomja meg: n * n a kilépéshez * Egy másik kulcs a beolvasáshoz."
visszhang
read -s -n1 -p "Új fotó beolvasása?" gombnyomás
visszhang
}

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

# Rajt

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

I = xnumx

kérdés

míg ["$ keypress"! = "n"]; csináld
# új fotó beolvasásra
legyen "I + = 1"
NAME = $ FILE $ I
scanimage $ PARAMETERS | konvertálás - $ NAME.jpg
kérdés
csinált

Javaslatok

A példában leírtakhoz hasonló nagy felbontások használata sokkal lassabbá teszi a beolvasást.

Ne feledje, hogy ha fényképet szeretne nyomtatni papírra, akkor körülbelül 250 pont hüvelykre van szüksége. Ha a fényképek beolvasásának az a célja, hogy az eredetivel azonos méretben nyomtassák ki őket, akkor elegendő a 250-es felbontás. A monitoron való megtekintéshez elegendő 100. Nagyobb felbontás nagyítást szolgálna.

A halom fényképet előre meg kell készíteni, hogy minden fotó a jobb oldalon legyen. Így nem fog pazarolni az időt a szkennerbe történő behelyezéssel, hogy ne forduljanak 180 ° -kal.

A geometriai paraméterek mérésének kalibrálásakor tanácsos megfigyelni, hogy melyik pozícióba helyezze az eredetit, hogy a digitális képek ne "fejjel lefelé" álljanak. Esetemben a fénykép alsó része az 'l' tengely mentén halad.

Ha csak egy szkenner van csatlakoztatva, ne használja a -d opciót. A szkriptben ez DEV = »»

Előfordul, hogy a számok megváltoznak az "xerox_mfp: libusb: 001: 003" fájlban, és a parancsfájl használatakor minden alkalommal módosítania kell.

Vigyázzon kötőjelekre és idézetekre a szkript másolásakor. A kötőjelek (a mínuszjel) az opciótól függően lehetnek egy vagy kettő; az idézőjelek a billentyűzet duplája, nem egyes szövegszerkesztők, például a LibreOffice teszik őket.

A biztonság kedvéért a szkript nem hozza létre a könyvtárat, ha az már létezik, hogy ne írja felül a fájlokat, ha vannak ilyenek. Ebben az esetben megáll.

Ha a fényképalbum régi, ne sajnálja, ha hiányoznak a képek a hajból, ráncokból vagy kilókból: -


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   Junior Calderon dijo

    Azta! Milyen jó tuto!
    Nem gondoltam volna, hogy ennyi mindent meg lehet csinálni a bash xD-vel
    Minden nap többet tanul!
    Köszönöm a hozzászólást!
    Nincs szkennerem, de ha kapok, azonnal kipróbálom 🙂

  2.   Rube dijo

    Milyen jól segít ez a hozzájárulás a jegyzeteim digitalizálásában, remélem, hogy javulni fog, gondolkodom egy olyan funkción, amely egy teljes fájl beolvasására és a beolvasott objektum méretének felismerésére szolgál, mivel a képmágustól függünk, konvertálni djvu vagy pdf formátumba, és így egyetlen fájlt létrehozni. Hát csak tomboltam. Nagyon köszönöm a hozzájárulást.

  3.   szeretem dijo

    Milyen nagy öröm, nagyon köszönöm a megosztást.