I-scan ang isang photo album na may isang script mula sa linya ng utos

Malinaw na maraming mga graphic interface para sa pag-scan ng mga larawan, na nagbibigay ng maraming mga pagpipilian. Ngunit kapag ang bilang ng mga larawan upang i-scan ay malaki at wala kaming isang scanner na may isang awtomatikong feeder ng sheet, magiging matigas ang mga bagay. Sa pangkalahatan kailangan mong gumawa ng isang pag-click upang mag-scan, isa pang pag-click marahil sa kabilang dulo ng window upang makatipid ... tumatagal ng oras. Gayunpaman, isang mahusay na dahilan upang magamit ang Linya ng utos.

Ito ay isang kontribusyon mula kay Rubén, kaya't naging isa sa mga nagwagi sa aming lingguhang kompetisyon: «Ibahagi ang alam mo tungkol sa Linux«. Binabati kita Rubén!

Nabasa ko ang mga artikulo sa Pagproseso ng Batch Image kasama ang GIMP y Paano manipulahin ang mga imahe mula sa terminal, araw lamang na tinanong ako ng kaibigan kong si Huguito para sa mga larawan (na nawala sa kanya) ng isang paglalakbay na ginawa namin noong 1989… (4 na rolyo ng 36 na larawan! at sa papel, syempre 🙂. Ipinaalala nito sa akin ang tip na ito upang i-scan ang mga larawan na nakalimutan ko .

Ang ideya ay ang paggamit ng isang script upang gawin ito nang pinakamabilis hangga't maaari:

1.- Maglagay ng larawan sa scanner
2.- Pindutin ang anumang key upang mag-scan
3.- Ulitin ang pamamaraan, maliban kung ang key na pinindot ay halimbawa ng isang 'n' upang lumabas
4.- Ang mga larawan ay nai-save at bilang sa isang paunang itinatag na subdirectory.

Anong utos

Ang utos na 'mahika' ay scanimage na bahagi ng SANE. Ang SANE ay isang API na nagbibigay ng standardized access sa anumang imaging device. Ang Sane API ay nasa pampublikong domain at ang source code ay magagamit sa ilalim ng GNU General Public Lisensya.

Ang pag-install ay simple. Ang bawat pamamahagi ay nagdadala ng mga package. Para sa Ubuntu (o mga derivatives nito), sapat na upang magamit ang synaptic at mai-install ang matino at matino na util.

Paano gamitin?

Kung gaano palagi ang pinakamahusay na magsulat sa isang terminal na 'man scanimage'. Gayunpaman, ibubuod namin ang mga pagpipilian na gagamitin namin.

Nagbubukas kami ng isang terminal at nagpapatakbo ng scanimage -L upang makita ang mga magagamit na aparato:

scanimage -L

Sa aking kaso bumalik ito:

ang aparato `xerox_mfp: libusb: 001: 005 'ay isang SAMSUNG ORION multi-function peripheral

Ito ang resulta na ibinigay sa akin ng aking Samsung SCX-4200 multifunction. Kung mayroon kang isang all-in-one at hindi mo mahanap ang aparato, tiyaking hindi aktibo ang printer, halimbawa may nakabinbing pag-print.

Ang halagang 'xerox_mfp: libusb: 001: 003' ay ginagamit upang sabihin sa utos ng scanimage kung aling aparato ang gagamitin sa pamamagitan ng pagpipiliang -d. Kung ang isang scanner lamang ang nakakonekta, ang pagpipiliang ito ay hindi kinakailangan.

Kapag nag-scan ang utos ng scanimage, ipinapadala nito ang nagresultang imahe sa karaniwang output sa pnm o tiff format. Kaya upang i-scan ay na-redirect namin ang output sa isang file. At kung nais naming makita kung anong mga mensahe ang ibinibigay ng utos, idinagdag namin ang pagpipilian na -v. Kung nais din naming makita ang porsyento ng pag-unlad ng pagpapatakbo idinagdag namin ang pagpipiliang -p.

scanimage -v -p> image.tiff

scanimage: pag-scan ng imahe ng laki 1284x1734 mga pixel sa 24 bits / pixel
scanimage: pagkuha ng RGB frame
scanimage: halaga ng min / max greylevel = 69/255
scanimage: basahin ang 6679368 bytes sa kabuuan
Pag-unlad: 13.8%

Ano ang ibibigay sa atin kung mag-scan tayo ng tulong? Tila halata, nagbibigay ito ng tulong sa utos. Ngunit ang utos na ito ay may kakaibang katangian. Sa pagtatapos ng pangkalahatang tulong para sa utos idagdag ang mga tukoy na parameter na tinatanggap ng iyong scanner.

scanimage --tulong

Paggamit: scanimage [OPSYON] ...

BLA bla ....

Mga pagpipilian na tukoy sa aparato `xerox_mfp: libusb: 001: 005 ':

pamantayan:
--resolusyon 75 | 100 | 150 | 200 | 300 | 600dpi [150] Itinatakda ang resolusyon ng na-scan na imahe.
--mode Lineart | Halftone | Grey | Kulay [Kulay] Pinipili ang mode ng pag-scan (hal, lineart, monochrome, o kulay).
- highlight ng 30..70% (sa mga hakbang ng 10) [hindi aktibo] Piliin ang minimum-ningning upang makakuha ng isang puting point
--source Flatbed | ADF | Auto [Flatbed] Pinipili ang mapagkukunan ng pag-scan (tulad ng isang feeder ng dokumento).
Geometry:
-l 0..215.9mm (sa mga hakbang ng 1) [0] Itaas sa kaliwang x na posisyon ng lugar ng pag-scan.
-t 0..297.18mm (sa mga hakbang ng 1) [0] Itaas sa kaliwa at posisyon ng lugar ng pag-scan.
-x 0..215.9mm (sa mga hakbang ng 1) [215.9] Lapad ng scan-area.
-y 0..297.18mm (sa mga hakbang ng 1) [297.18] Taas ng scan-area.

I-type ang "scanimage --help -d DEVICE" upang makakuha ng listahan ng lahat ng mga pagpipilian para sa DEVICE.

Listahan ng mga magagamit na aparato:

xerox_mfp: libusb: 001: 005

Mula dito maaari nating piliin ang mga pagpipilian sa mga halagang maaari nating magamit.

Halimbawa:

Paglutas

–Rolusyon 150

Modo

–Kulay ngMode

Ngayon ang geometry. Napakapakinabangan nito sapagkat masasabi natin sa scanner na kunin lamang ang imahe ng isang sektor (kung saan ilalagay namin ang litrato), at nai-save namin ang oras ng pag-scan sa natitirang ibabaw na dapat din naming i-cut mamaya sa isang graphic editor tulad bilang Gimp.

-l 0 ay nagsisimulang mag-scan nang pahalang mula sa 0 mm mula sa kaliwang sulok sa itaas ng scanner

-T nagsisimula ang pag-scan nang patayo mula sa 0 mm mula sa kaliwang sulok sa itaas ng scanner

Tandaan na pinili kong ilagay ang larawan sa sulok ng scanner [coordinate (0,0)], dahil mas madaling mailagay. Sa aking scanner (laki ng A4) l maaaring pumunta mula 0 hanggang 215.9 at t mula 0 hanggang 297.18.

Lapad at Taas ng litrato. Sa aking kaso ang mga larawan ay 13x18cm:

-x 180 ang lapad

-at 130 taas

Samakatuwid ito ay i-scan lamang ang bahagi kung saan inilalagay namin ang aming larawan. Siyempre, kung sumasang-ayon tayo sa kung ano ang kaliwa, kanan, lapad, taas, itaas at ibaba. Ito ay depende sa kung paano mo titingnan ang iyong scanner. Iminumungkahi kong subukan ang mga coordinate at isasaayos ang mga ito sa iyong mga pangangailangan.

Ang isang halimbawa ng utos ay maaaring:

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

Sa mga pagpipiliang ito, makakagawa na kami ng aming script.

Ngunit bago ...

Ang tiff o pnm ay hindi naka-compress na format, kaya ang aming mga larawan ay kukuha ng isang malaking puwang sa disk. Dito nagmumula ang utos ng pag-convert ng ImageMagick na ipinaliwanag sa Paano manipulahin ang mga imahe mula sa terminal.

Kung nakakakuha kami ng isang imahe.pnm mula sa scanner, maaari naming itong i-convert sa jpg:

i-convert ang image.pnm image.jpg

Ngunit bago gawin ito, isa pang trick:

Ang Image.pnm ay tumatagal ng maraming puwang at dapat natin itong tanggalin pagkatapos makuha ang aming imahe.jpg. Mayroong isang pagpipilian para sa pag-convert ng utos upang sa halip na kumuha ng isang file mula sa disk ay direkta itong mai-convert ang karaniwang input. Natapos ito sa isang dash - sa halip na file:

convert - image.jpg

Dahil naghahatid ang scanimage ng na-scan na imahe sa karaniwang output, gumawa kami ng isang "pipeline" at nai-save ang oras ng pagpoproseso na kinakailangan upang magsulat at pagkatapos ay tanggalin ang file ng image.pnm mula sa disk.

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

Ngayon oo, ang script ...

Isusulat namin ang sumusunod na code sa isang file na tatawagin namin ang scan-album.sh at binibigyan namin ito ng pahintulot sa pagpapatupad. Kapag pinatakbo namin ito, lilikha ito ng isang subdirectory kung nasaan ang aming mga na-scan na larawan. Tandaan na baguhin ang mga halaga ng parameter sa iyong mga pangangailangan.

Tiyaking basahin ang ilang mga mungkahi pagkatapos ng script.

#! / bin / bash
# Data para sa mga pagpipilian

VERBOSE = "" # tingnan ang katayuan msg: "" ay hindi; "-v" ay oo
PROGRESS = "- p" # show progress "" ay hindi; "-p" ay oo

# Ang mga sumusunod na parameter ay ibinibigay ng scanimage - tulong para sa iyong scanner
#Device: Kung may isang scanner lamang, hindi kinakailangan, ilagay ang DEV = ""
# DEV = "xerox_mfp: libusb: 001: 003"

DEV = ""
MODE = "- Kulay ng mode"
RESOLUTION = "- resolusyon 600dpi"

#geometry, hal 130x180 mm na larawan
#location sa itaas na kaliwang vertex scanner

x0 = 0
y0 = 0
lapad = 180
mataas = 130

#options:

L = "- l $ x0"
T = "- t $ y0"
WIDTH = "- x $ lapad"
TAAS = "- at $ mataas"

# lahat ng mga parameter magkasama:

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

# Pangalan ng album. Lumikha ng isang subdirectory gamit ang iyong pangalan:

ALBUM = "Piyesta Opisyal_1989"

# Para sa seguridad, wala akong ginagawa kung mayroon nang direktoryo

mkdir $ ALBUM

kung ["$?" = "1"]; tapos
labasan 100
fi

# Pangalan ng base para sa mga larawan (sa sub dir)

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

function na tanong () {
itinapon "-------------------------------------------- - ----------------- "
miss
itinapon ang "*****************************"
echo "No. ng mga na-scan na larawan:" "$ I"
itinapon ang "*****************************"
echo -e "Press: n * n upang lumabas * Isa pang key upang i-scan."
miss
read -s -n1 -p "I-scan ang isang bagong larawan?" keypress
miss
}

####

# Magsimula

####

Ako = 0

tanong

habang ["$ keypress"! = "n"]; gawin
# bagong larawan upang i-scan
hayaan ang "ako + = 1"
NAME = $ FILE $ I
scanimage $ PARAMETERS | convert - $ NAME.jpg
tanong
tapos

Mga Mungkahi sa

Ang paggamit ng matataas na resolusyon tulad ng mga nasa halimbawa ay ginagawang mas mabagal ang pag-scan.

Tandaan na kung nais mong mag-print ng larawan sa papel kailangan mo ng halos 250 tuldok bawat pulgada. Kung ang ideya ng pag-scan ng mga larawan ay i-print ang mga ito sa parehong laki ng orihinal, sapat na ang isang resolusyon na 250. Upang makita ang mga ito sa isang monitor na may 100 ay sapat na. Ang isang mas mataas na resolusyon ay maghahatid para sa isang pagpapalaki.

Ang stack ng mga larawan ay dapat na handa nang maaga upang ang bawat larawan ay nasa kanang bahagi. Sa ganitong paraan hindi mo sayangin ang oras sa paglalagay nito sa scanner upang hindi sila paikutin 180º.

Kapag na-calibrate ang mga sukat ng mga parameter ng geometry, ipinapayong obserbahan kung aling posisyon ang orihinal na dapat ilagay, upang ang mga digital na imahe ay hindi "baligtad". Sa aking kaso ang mas mababang bahagi ng larawan ay napupunta sa 'l' axis.

Kung mayroon ka lamang isang konektado na scanner huwag mag-atubiling hindi gamitin ang -d na pagpipilian. Sa script ito ay DEV = »»

Minsan ang mga numero sa "xerox_mfp: libusb: 001: 003" ay nagbabago at kailangan mong baguhin ito sa tuwing gagamitin mo ang script.

Panoorin ang mga hyphen at quote kapag kinopya ang script. Ang hyphens (ang minus sign) ay maaaring isa o dalawa na magkasama depende sa pagpipilian; ang mga panipi ay ang doble ng keyboard, hindi ang mga ito ang inilalagay ng ilang mga processor ng salita tulad ng LibreOffice.

Para sa seguridad, ang script ay hindi lumilikha ng direktoryo kung mayroon na, upang hindi mai-overlap ang mga file kung mayroon man. Sa kasong iyon tumitigil ito.

Kung ang photo album ay luma na, huwag magsisi kung ang mga imahe ay maraming buhok, mga kunot o kilo ay nawawala:


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   Juniors Calderon dijo

    Wow! Ang galing tuto!
    Hindi ko naisip na maraming bagay ang maaaring gawin sa bash xD
    Araw-araw ay natututo ka pa!
    Salamat sa input!
    Wala akong Scaner ngunit kung makakakuha ako ng isa, susubukan ko agad ito 🙂

  2.   Rube dijo

    Gaano kahusay ang makakatulong sa akin ng kontribusyon sa pag-digitize ng aking mga tala, inaasahan kong magpapabuti, iniisip ko ang isang pagpapaandar upang mai-scan ang isang kumpletong file at tuklasin ang laki ng na-scan na bagay, dahil nakasalalay kami sa imahe na magick, maaari na-convert sa djvu o pdf at sa gayon lumikha ng isang solong file. Well nag-rambol lang ako. Maraming salamat sa iyong naiambag.

  3.   mahal ito dijo

    Anong laking kasiyahan, maraming salamat sa pagbabahagi.