Split
將圖像分割成多個部分
我有一張如下圖。它是 25792388 像素。讓我們假設它的左下角是 0,0。從該圖像中,我想創建多個圖像,如下所示並將它們保存在工作文件夾中。每個圖像的大小為 100100 像素。每個圖像將由其左下角座標保存。
- 第一個圖像的左下角為 0,0。右上角將在 100,100,圖像將保存為 0-0.jpg
- 第二張圖片的左下角為 10,0。右上角將在 110,100,圖像將保存為 10-0.jpg
- 完成最後一行後,Y座標將移動10。如果是第二行,第一張圖像將在0,10處,該圖像將保存為0-10.jpg
最快的方法是什麼?我更喜歡命令行方法。但首先,我可以使用任何類型的工具。
我知道在目前圖像的情況下,它將把它分成大約 257*238 個圖像。但是我有足夠的磁碟空間,我需要每個圖像來執行文本檢測。
這是可以執行您想要的操作的 shell 程式碼(
bash
、ksh
或):zsh
image=clock.jpg size=$( identify -ping -format "%wx%h" "${image}" ) x_upb=${size%x*} y_upb=${size#*x} x_inc=10 y_inc=10 x_tile=100 y_tile=100 for ((x=0; x<x_upb; x+=x_inc)) do for ((y=0; y<y_upb; y+=y_inc)) do convert "${image}" -crop "${x_tile}x${y_tile}+${x}+${y}" "$x-$y.jpg" done done
該程序
convert
來自 ImageMagick 程序套件。由於也可以從圖片文件中自動提取圖片大小,因此我也添加了該步驟。根據 don_crissti 的評論,我也建議identify
為此目的使用(它也方便地來自 ImageMagick 程序套件)。您當然也可以在x_upb
和中硬編碼圖片大小y_upb
,還可以根據需要調整平舖大小和平鋪移位增量。我希望並認為程式碼是不言自明的。注意:它當然需要一些調整;例如,圖塊可能不會超出上限(或者如果靠近邊界,您會得到更小的子圖片),因此如果您想要相等,則需要從上限中減去圖塊大小 -整個圖像的大小子圖像。
注意:據我所知,“幾何”被定義為具有從左上角(0,0)開始的方向。如果您想要其他方向,則需要自己進行數學運算以適應該介面定義。通常的程式碼模式是根據上界來處理相應的座標,例如,
$((y_upb - y))
將y
是變體部分,即(循環)變數。