[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件管理] 用 ImageMagick 批处理裁剪扫描图片的空白边缘

本帖最后由 aa77dd@163.com 于 2016-9-30 15:55 编辑

印刷书籍页面本身有空白边缘, 经过扫描得到的图片可能比在原始空白边缘基础上还有所增加, 阅读此类电子书籍时, 如果页面适应窗口, 实际内容就可能没有显示得足够大而影响辨识, 在移动设备的小屏幕上尤甚

ImageMagick 官方有详尽的命令行示例代码

http://www.imagemagick.org/Usage/crop/#trim

但对并不需要经常用此工具批处理图片者, 消化这个命令行用法, 还是很要点时间

用 blur 参数可以对噪点严重的空白边缘适应, 但处理速度也极大程度上减慢;
仅仅轻微的噪点时,  不用 blur 参数, 仍 可以用 fuzz 仍有一定处理噪点的能力, 而速度不会减少太多
  1. REM 一次性裁剪掉四边空白
  2. %convert% "d:\test.png" -gravity SouthEast ^
  3.           -background white -splice 0x0  -background black -splice 0x0 ^
  4.           -fuzz 5%% -trim  +repage -chop 0x0  "d:\test.png"
复制代码
图片处理前



图片处理后

  1. @echo off & chcp 936
  2. setlocal enabledelayedexpansion
  3. set "IM=D:\桌面\ImageMagick-7.0.3-0-portable-Q16-x86"
  4. for %%N in (identify convert) do for %%a in ("%IM%\%%N.exe") do set "%%N=%%~sa"
  5. set "imgTypes=png bmp jpg"
  6. set /a "cntPic=sumPic=0"
  7. for %%x in (%imgTypes%) do for /f "delims=" %%i in ('2^>nul dir /a-d /b /s "%~dp0*.%%x" ^| find /v /c ""') do ^
  8. set /a "sumPic += %%i"
  9. for %%x in (%imgTypes%) do for /f "delims=" %%i in ('2^>nul dir /a-d /b /s "%~dp0*.%%x"') do (
  10.     for /f "tokens=1-2" %%b in ('%identify% -format "%%[fx:w] %%[fx:h]" "%%~i"') do (
  11.         set /a "cntPic+=1, 原宽=%%b,原高=%%c"
  12.         title 已完成 !cntPic!/!sumPic! %%~i %~nx0 & rem 在标题栏上显示处理进度
  13.         REM echo;%%i
  14.         REM echo;原尺寸:!原宽!,!原高!
  15.                 REM 适应边缘空白有噪点的方式, -blur 参数控制噪点大小过滤, -fuzz 控制色模糊过滤
  16.                 for /f delims^= %%a in ('%convert% "%%~i" -virtual-pixel edge -blur 0x4 -fuzz 5%% -trim ^
  17.                                            -format '%%[fx:w+20]x%%[fx:h+20]+%%[fx:page.x-10]+%%[fx:page.y-10]' ^
  18.                           info:') do (
  19.                                 echo;%%~i: %%a
  20.                                 set "cropParam=%%a"
  21.                                 %convert% "%%~i" -crop !cropParam:'=! +repage "%%~i"
  22.                 )
  23.                 REM 以下是对清晰图片 trim 的方式, 空白边缘无噪点
  24.         REM 剪上部 和 左部 空白
  25.         REM %convert% "%%~i" -gravity South ^
  26.                   REM -background white -splice 0x1  -background black -splice 0x1 ^
  27.                   REM -trim  +repage -chop 0x1 ^
  28.                   REM -gravity East ^
  29.                   REM -background white -splice 1x0  -background black -splice 1x0 ^
  30.                   REM -trim  +repage -chop 1x0 ^
  31.                   REM "%%~i"
  32.         REM 一次性裁剪掉四边空白
  33.         REM %convert% "%%~i" -gravity SouthEast ^
  34.                   REM -background white -splice 0x0  -background black -splice 0x0 ^
  35.                   REM -fuzz 5%% -trim  +repage -chop 0x0  "%%~i"
  36.         REM 剪下部和右部空白
  37.         REM %convert% "%%~i" -gravity North ^
  38.                   REM -background white -splice 0x1  -background black -splice 0x1 ^
  39.                   REM -trim  +repage -chop 0x1 ^
  40.                   REM -gravity West ^
  41.                   REM -background white -splice 1x0  -background black -splice 1x0 ^
  42.                   REM -trim  +repage -chop 1x0 ^
  43.                   REM "%%~i"
  44.     )
  45. )
  46. echo;!cntPic!/!sumPic! 已完成处理
  47. pause
  48. exit
  49. REM 一次性裁剪掉四边空白
  50. REM %convert% "d:\test.png" -gravity SouthEast ^
  51.           REM -background white -splice 0x0  -background black -splice 0x0 ^
  52.           REM -trim  +repage -chop 0x0  "d:\test.png"
  53. REM 剪上部空白
  54. %convert% "D:\test.png" -gravity South ^
  55.           -background white -splice 0x1  -background black -splice 0x1 ^
  56.           -trim  +repage -chop 0x1  "d:\trim_South.png"
  57. REM 剪左部空白
  58. %convert% "d:\trim_South.png" -gravity East ^
  59.           -background white -splice 1x0  -background black -splice 1x0 ^
  60.           -trim  +repage -chop 1x0  "d:\trim_SouthEast.png"
复制代码
1

评分人数

经常用ImageMagick把相机间隔连拍的照片合成GIF,命令行就是好用。如果是PS,导入大量图片非常容易死机。

TOP

赞一个,与其说是脚本,但批处理更像是一种文化。极客文化。

TOP

返回列表