显然有几个 用于扫描照片的图形界面,其中提供了许多选项。 但是,当要扫描的照片数量很大并且我们没有配备自动供纸器的扫描仪时,事情就会变得很棘手。 通常,您需要单击一下进行扫描,或者在窗口的另一端进行另一次单击才能保存...这需要时间。 无论如何,一个很好的借口来使用 命令行. |
我读了以下文章 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-帮助
用法: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“扫描新照片?” 按键
回音
}
##############################################
#开始
##############################################
I = 0
问题
while [“ $ keypress”!=“ n”]; 做
#要扫描的新照片
让“我+ = 1”
名称= $ FILE $ I
scanimage $参数| 转换-$ NAME.jpg
问题
完成
建议
使用示例中的高分辨率会使扫描速度变慢。
请记住,如果要在纸张上打印照片,则每英寸需要大约250点。 如果扫描照片的想法是使用与原始照片相同的尺寸打印照片,则分辨率为250足够了。要在监视器上查看照片就足够100。 更高的分辨率将有助于放大。
照片堆应该事先准备好,以便每张照片都在右侧。 这样,您就不会浪费时间将其放入扫描仪中,这样它们就不会旋转180º。
校准几何参数的测量值时,建议观察将原稿放置在哪个位置,以使数字图像不会“倒置”。 在我的情况下,照片的下部沿“ l”轴移动。
如果仅连接一台扫描仪,请不要使用-d选项。 在脚本中是DEV =»»
有时,“ xerox_mfp:libusb:001:003”中的数字会更改,并且每次使用脚本时都必须对其进行修改。
复制脚本时,请注意连字符和引号。 连字符(减号)可以是一个或两个在一起,具体取决于选项。 引号是键盘的两倍,而不是像LibreOffice这样的文字处理程序所使用的引号。
为了安全起见,脚本不会创建目录(如果目录已经存在),以免覆盖目录(如果有的话)。 在这种情况下,它将停止。
如果相册较旧,则不留意图像中是否有大量的头发,皱纹或几公斤缺失:-
哇! 多么好的兔兔!
我不认为bash xD可以完成很多事情
每天您都会学到更多!
感谢您的意见!
我没有扫描仪,但是如果有扫描仪,我会立即尝试try
这种贡献对我的笔记数字化有多大帮助,我希望它能有所改善,我在考虑一种功能,可以扫描整个文件并检测扫描对象的大小,因为我们依赖图像魔术,它可以转换为djvu或pdf,从而创建一个文件。 好吧,我只是闲逛。 非常感谢您的贡献。
非常高兴,非常感谢您的分享。