基本需求
- linux
- bash shell(大概)
- ImageMagick(以下所用的 montage 指令為 IM 套件中的一種程式)
- 懂一點程式概念
準備
- 把 Amazon.jp 上分割過的大圖給抓下來放進單一資料夾
- 在該資料夾路徑下開終端機
- 照需求修改 shell 指令
- Enter 執行後一分鐘內就有成果
指令例(只有一行、想把兩個 montage 指令分開執行也行)
montage *.jpg -geometry +0+0 -tile 1x6 a.png && montage a*.png -geometry +0+0 -tile 4x1 b.png
指令說明
- montage - 拿來合併圖片的指令(後接檔名先出現的為輸入、後為輸出)
- tile - 指定不同圖片直行橫列該拼貼多少張的參數
- geometry - 指定某一塊拼貼圖的寬高像數大小及邊界該留多少像數的參數
- && - 代表做完前面的指令後繼續做後面的指令(與 pipe「|」無關)
- * - 表示任意數量的字元的常規表示式(如 *.jpg 表任一 jpg 圖檔)
執行過程說明
- 從 Amazon.jp 上抓下來的圖片副檔名大多是 jpg
- montage 一定會先由左到右排完再往下一橫列排序
- 承上、所以要先把一直行的圖各自拼完再把輸出好的圖合在同一橫列
- geometry 指定 +0+0 而不是 400x400 是要避免圖片大小不一
- 不過我也不確定是不是用 png 就真的無損了
示意圖及說明
假設從 Amazon.jp 抓下了這六張分割過的大圖:
(3,0,0) | (3,1,0) | (3,2,0) |
(3,0,1) | (3,1,1) | (3,2,1) |
因為 montage 會用 (3,0,0) (3,0,1) (3,1,0)... 的順序,由左上至右上,再換下一橫列,所以只跑一次一定會讓圖片亂掉。
因此先跑一次 -tile 1x2 把 (3,0,0) (3,0,1) 拼起來(後略),再把拼好的一張 (3,0,*) 一張 (3,1,*) 一張 (3,2,*),三張用 -tile 3x1 拼起來,就能得到原先完整未切割過的大圖了。
所以基本上改改 -tile 就可以。(圖請用 HttpFox 等的抓下來、想小試身手的可以拿這張試試:Amazon.co.jp: 僕は友達が少ない6 ドラマCD付き特装版: 平坂読, ブリキ: 本)
延伸議題
- 讓程式自己去抓出最大數字後、直接判斷 -tile 要填多少
- 手動抓出分割圖的最後一張的網址後、丟給程式去自動抓完自動拼
- 輸入 Amazon.jp 商品網址後自動(略)
0 comments:
張貼留言