從命令行使用腳本掃描相冊

顯然有幾個 用於掃描照片的圖形界面,其中提供了許多選項。 但是,當要掃描的照片數量很大並且我們沒有配備自動供紙器的掃描儀時,事情就會變得很棘手。 通常,您必須單擊一下進行掃描,或者在窗口的另一端進行另一次單擊才能保存...這需要時間。 無論如何,一個很好的藉口來使用 命令行.

這是魯本的貢獻,因此成為我們每週比賽的獲勝者之一:分享您對Linux的了解«。 恭喜魯本!

我讀了以下文章 GIMP批處理圖像 y 如何從終端操作圖像,就在我的朋友Huguito向我索要我1989年旅行的照片(他丟失的照片)…(4卷36張照片!當然還有紙上🙂),它使我想起了掃描照片的技巧我忘記了。

這個想法是使用腳本來盡快完成它:

1.-將照片放在掃描儀上
2.-按任意鍵進行掃描
3.-重複該過程,除非按下的鍵例如是“ n”退出
4.-照片將被保存並在預先建立的子目錄中編號。

什麼命令

“魔術”命令是scanimage,它是SANE的一部分。 SANE是提供對任何成像設備的標準化訪問的API。 Sane API在公共領域中,其源代碼可在GNU通用公共許可證下獲得。

安裝很簡單。 每個發行版都帶有其軟件包。 對於Ubuntu(或其衍生產品),只需使用synaptic並安裝sane和sane-utils。

如何使用?

最好的方法總是在終端“ man scanimage”中寫入。 但是,我們將總結我們將使用的選項。

我們打開一個終端並運行scanimage -L以查看可用的設備:

掃描圖像

就我而言,它返回:

設備`xerox_mfp:libusb:001:005'是三星ORION多功能外圍設備

這就是它給我的Samsung SCX-4200多功能打印機帶來的結果。 如果您具有多合一功能,但找不到該設備,請確保打印機未處於活動狀態,例如打印待處理。

值“ xerox_mfp:libusb:001:003”用於通過-d選項告訴scanimage命令使用哪個設備。 如果僅連接一台掃描儀,則不需要此選項。

當scanimage命令掃描時,它將結果圖像以pnm或tiff格式發送到標準輸出。 因此,為了進行掃描,我們將輸出重定向到文件。 如果要查看命令給出的消息,請添加-v選項。 如果我們還想查看操作進度的百分比,請添加-p選項。

scanimage -v -p> image.tiff

scanimage:以1284位/像素掃描大小為1734x24像素的圖像
scanimage:獲取RGB幀
scanimage:最小/最大灰度值= 69/255
scanimage:總共讀取6679368字節
進度:13.8%

如果我們執行scanimage –help,它將給我們帶來什麼? 看起來很明顯,它為命令提供了幫助。 但是此命令具有特殊性。 在命令的常規幫助末尾,添加掃描儀可接受的特定參數。

scanimage-幫助

用法:scanimage [OPTION] ...

BLA bla ....

特定於設備`xerox_mfp:libusb:001:005'的選項:

標準:
--resolution 75 | 100 | 150 | 200 | 300 | 600dpi [150]設置掃描圖像的分辨率。
--mode線稿|半色調|灰色|彩色[顏色]選擇掃描模式(例如,線稿,單色或彩色)。
--highlight 30..70%(以10為步進)[不活動]選擇最小亮度以獲得白點
--source平板| ADF |自動[平板]選擇掃描源(例如文檔進紙器)。
幾何:
-l 0..215.9mm(以1為步長)[0]左上角x掃描區域的位置。
-t 0..297.18mm(以1為步長)[0]左上角和掃描區域的位置。
-x 0..215.9mm(以1為步長)[215.9]掃描區域的寬度。
-y 0..297.18mm(以1為步長)[297.18]掃描區域的高度。

輸入``scanimage --help -d DEVICE''以獲取DEVICE所有選項的列表。

可用設備列表:

xerox_mfp:libusb:001:005

從這裡我們可以選擇具有我們可以使用的值的選項。

例如:

決議

–第150號決議

摩多

–模式顏色

現在是幾何。 這非常有用,因為我們可以告訴掃描儀僅提取一個扇區的圖像(我們將在其中放置照片),並且節省了掃描其餘表面的時間,我們稍後還應使用圖形編輯器進行切割,例如作為金普。

-l 0從掃描儀左上角0毫米開始水平掃描

-t 0從掃描儀左上角0毫米開始垂直掃描

請注意,我選擇將照片放在掃描儀的角落[坐標(0,0)],因為它更易於放置。 在我的掃描儀(A4尺寸)上,l可以從0到215.9,t可以從0到297.18。

照片的寬度和高度。 在我的情況下,照片是13x18cm:

-x 180寬

-和130高

因此,它將僅掃描我們放置照片的部分。 當然,如果我們同意左邊,右邊,寬度,高度,頂部和底部是什麼。 這將取決於您如何看待掃描儀。 我建議測試坐標並根據需要進行調整。

該命令的示例可能是:

scanimage -d xerox_mfp:libusb:001:003 -p-模式顏色-分辨率150 -l 0 -t 0 -x 180 -y 130> image.pnm

使用這些選項,我們已經可以構建腳本。

但是之前...

Tiff或pnm是未壓縮的格式,因此我們的照片將佔用巨大的磁盤空間。 這是ImageMagick轉換命令所在的位置,有關如何從終端操作圖像進行了說明。

如果我們從掃描儀獲得了image.pnm,則可以將其轉換為jpg:

轉換image.pnm image.jpg

但是在這樣做之前,還有另一個技巧:

Image.pnm佔用大量空間,獲取image.jpg後應將其刪除。 convert命令有一個選項,以便代替直接從磁盤上獲取文件,它將直接轉換標準輸入。 這是通過破折號-而不是文件來完成的:

轉換-image.jpg

由於scanimage將掃描的圖像傳送到標準輸出,因此我們進行了“流水線化”,並節省了從磁盤刪除image.pnm文件所需的處理時間。

scanimage -d xerox_mfp:libusb:001:003 -p --mode顏色-分辨率150 -l 0 -t 0 -x 180 -y 130 | 轉換-image.jpg

現在是的,腳本...

我們將以下代碼寫入一個名為scan-album.sh的文件中,並授予其執行權限。 當我們運行它時,它將創建一個子目錄,掃描的照片將位於該子目錄中。 切記根據需要修改參數值。

一定要在腳本之後閱讀一些建議。

#!/斌/慶典
#選項數據

VERBOSE =“”#查看狀態msg:“”不是; “ -v”是
PROGRESS =“-p”#顯示進度“”為否; “ -p”是

#scanimage --help為您的掃描儀提供以下參數
#Device:如果只有一台掃描儀,則沒有必要,將DEV =“”
#DEV =“ xerox_mfp:libusb:001:003”

DEV =“”
MODE =“-模式顏色”
解決方案=“-分辨率600dpi”

#geometry,例如130x180毫米照片
#位於左上角頂點掃描器中

x0 = 0
y0 = 0
寬度= 180
高= 130

#選項:

L =“-l $ x0”
T =“-t $ y0”
WIDTH =“-x $ width”
HIGH =“-和$高”

#所有參數一起:

參數=“ $ DEV $詳細信息$進度$模式$分辨率$ L $ T $寬度$高”

#相冊名稱。 用您的名字創建一個子目錄:

專輯=“假日_1989”

#為了安全起見,如果目錄已經存在,我什麼也不做

mkdir $專輯

如果[“ $?” =“ 1”]; 然後
退出100
fi

#照片的基本名稱(在子目錄中)

FILE =“ ./” $專輯“ /” $專輯“ _foto_”

函數問題(){
扔出去 ” - - - - - - - - - - - - - - - - - - - - - - - - --------------------------“
錯過
扔出去 ”******************************”
回顯“掃描的照片數量:”“ $ I”
扔出去 ”******************************”
echo -e“按:n * n退出*另一個要掃描的鍵。”
錯過
讀-s -n1 -p“掃描新照片?” 按鍵
錯過
}

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

#開始

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

我= 0

問題

while [“ $ keypress”!=“ n”]; 做
#要掃描的新照片
讓“我+ = 1”
名稱= $ FILE $ I
scanimage $參數| 轉換-$ NAME.jpg
問題
完成

建議

使用示例中的高分辨率會使掃描速度變慢。

請記住,如果要在紙張上打印照片,則每英寸需要大約250點。 如果掃描照片的想法是使用與原始照片相同的尺寸打印照片,則分辨率為250就足夠了。要在監視器上查看照片,則100張就足夠了。 更高的分辨率將有助於放大。

照片堆應該事先準備好,以便每張照片都在右側。 這樣,您就不會浪費時間將其放入掃描儀中,這樣它們就不會旋轉180º。

校準幾何參數的測量值時,建議觀察將原件放置在哪個位置,以使數字圖像不會“倒置”。 在我的情況下,照片的下部沿“ l”軸移動。

如果僅連接一台掃描儀,請不要使用-d選項。 在腳本中是DEV =»»

有時“ xerox_mfp:libusb:001:003”中的數字會更改,並且每次使用腳本時都必須對其進行修改。

複製腳本時,請注意連字符和引號。 連字符(減號)可以是一個或兩個在一起,具體取決於選項。 引號是鍵盤上的雙引號,而不是像LibreOffice這樣的某些文字處理程序所使用的引號。

為了安全起見,腳本不會創建該目錄(如果該目錄已經存在),以免覆蓋目錄(如果有的話)。 在這種情況下,它將停止。

如果相冊較舊,則不要後悔缺少頭髮,皺紋或公斤的圖像:-


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   低級卡爾德隆 他說:

    哇! 多麼好的兔兔!
    我不認為bash xD可以完成很多事情
    每天您都會學到更多!
    感謝您的輸入!
    我沒有掃描儀,但如果有掃描儀,我會立即嘗試try

  2.   鄉巴佬 他說:

    這種貢獻對我的筆記數字化有多大幫助,我希望它能有所改善,我正在考慮一種功能,可以掃描整個文件並檢測掃描對象的大小,因為我們依賴圖像魔術,它可以轉換為djvu或pdf,從而創建一個文件。 好吧,我只是閒逛。 非常感謝您的貢獻。

  3.   阿多·埃洛(Ado Ello) 他說:

    非常高興,非常感謝您的分享。