最近公司有個批量壓縮的任務交給我。
對於io的是操作,我不是很擅長,自己比較shui 。不管怎麼樣,經過的不懈的努力
所以打算分享一下。
任務要求:
給你乙個資料夾,把該資料夾下的所有.png檔案進行壓縮,然後儲存到相對資料夾的映象對應子資料夾目錄下,
解決方案:
網上有很多壓縮的方式,也很繁雜,我也嘗試過很多,其中對tinifypng.com**的壓縮還是比較滿意的。
**:實現過程: 按照 developers/reference/dotnet **提供的api reference (這裡我用的是.net的api)
2.去**上註冊申請key(每個key每月可免費壓縮500張圖)
3.壓縮過程採用非同步形式,其他的一些的壓縮格式,裁剪等參看官網說明 。
4.可以 tinify.compressioncount 知道你當月剩餘可壓縮次數
下面是關鍵**
做乙個遞迴查詢檔案夾下的,遞迴處理上傳壓縮
public static void recursivefolder(directoryinfo thefolder, directoryinfo outfolder, string outpath)}}
foreach (fileinfo file in thefolder.getfiles("*.png"))
else
}else
}else}}
核心**二: (壓縮處理)
public static async void solve(string filefullname, string outfile)
try", filefullname);
var source = tinify.fromfile(filefullname);
sumuploadcnt++;
console.writeline(" ----------------- await : start ----------------- ", sumuploadcnt);
sumdownloadcnt++;
console.writeline(" ----------------- await : end ----------------- ", sumdownloadcnt);
if (sumdownloadcnt == sumuploadcnt)
console.writeline("solve this key has been compressed times, remaining times this month.",
compressionsthismonth, thismonthcnt - compressionsthismonth);
console.writeline("solve the task finished, welcome to use again.");}}
catch (accountexception e)
catch (clientexception e)
catch (serverexception e)
catch (connectionexception e)
catch (system.exception e)
}catch (system.exception e)
}
其中 tinifykeysarray 是個key池
private static listtinifykeysarray = new list()
;
其他就是乙個snv版本號的讀取
sub.getwcinfo();
新增subwcrevcom.exe引用,
using tinifyapi;
using libsubwcrev;
即可使用。
至於讀寫版本控制檔案就不詳述了,可以按照自己喜歡的格式寫,就是注意一下目錄中文的話,可能會亂碼問題,so 壓縮路徑和匯出路徑最好都是全英文的,包括版本控制路徑
最後寫乙個bat指令碼以後就可以雙擊執行了。很方便
@echo off
c:cd \batch\debug
tinifypng f:\svn\blackjack\doc\minister c:\users\administrator\desktop\temp\dest c:\batch\tinifypng.txt
簡單解釋下:
首先進入c盤\batch\debug 目錄,(上面程式執行後生成的debug目錄的備份目錄)
tinify 需要壓縮檔案的總目錄路徑 匯出檔案的目錄路徑 版本記錄檔案的路徑
注:我的**之後會更新在github上,小工具也會上傳,小工具做了限制,只能是有svn版本號的才會壓縮。
小工具:
SVN版本控制
1.svn安裝 sudo apt get install subversion 2.建立倉庫 對於多個 倉庫 首先在 var 下建立svn主目錄。svnadmin create var svn test1 svnadmin create var svn test2 3.修改配置檔案 倉庫目錄下 co...
SVN版本控制
一般情況,svn分3個目錄 主幹 trunk 分支 branch 標記 tag trunk 是用來做主方向開發的,乙個新模組的開發,這個時候就放在trunk,當模組開發完成後,需要修改,就用branch。branch 是用來做並行開發的,這裡的並行是指和trunk進行比較。tag 是用來做乙個mil...
本地版本跟svn版本對比 SVN(版本控制)
1.工作原理 客戶端 服務端 2.svn常見操作 1.發布專案 share project 專案組長將本機的專案第一次發布到 倉庫 3.提交 commit 組員將修改後的內同步到伺服器 本地 伺服器 4.更新 update 將伺服器中的最新 同步到本地 伺服器 本地 注意 更新提交操作 要及時 防止...