2019年8月31日 星期六

MahoMangaDownloaderVer8.7更新

這次改版內容主要是實作 / 修復幾個使用者提的feature request & bug, 具體內容如下:

1. 新增支援網站 https://www.comicun.com/

有使用者希望能追加支援這個網站, 研究了一下發現這網站有不少其他網站斷更新的作品(Dr. Stone, 約定的夢幻島等等), 而且更棒的是這網站所有資料都是後端提供, 完全沒隱藏漫畫圖片的位址跟防下載器, 所以我只要打web request就可以拿到所有我需要的東西, 不需要開瀏覽器套件跑一堆js浪費電腦資源, 下載也更快~~~。

2. 修復dm5如果該漫畫只有一頁, 下載器很容易下載失敗的bug

因為dm5日漫跟港韓漫的顯示方式不一樣, 只有一頁的日漫會跟港韓漫的邏輯混在一起導致下載容易失敗, 修了一下這邊的邏輯處理這bug。

3. 設置頁面新增EH / EX站cookie keys: igneous, hath_perks

分別有使用者反應這兩個cookie key是有用的, 以igneous來說, 有些人的帳號應該是沒辦法進EX的, 不過有使用者實測以下方法可以讓申請的帳號進入EX, 步驟如下:

a. 用VPN設定美國跳板, 然後辦EH表站帳號
b. 等7天過後, 一樣用VPN設定美國跳板, cookie換EX domain就可以進入EX站, 此時的igneous會被設定一個有意義的值, 未來即便不用VPN, 只要cookie有這個值就能直接進EX。

表站帳號要到什麼情況才能無痛進EX這點我到現在還是不知道, 自己的帳號以前好像是不斷玩小遊戲忽然有天就進得去了, 所以也一直不需要igneous這個cookie, 如果有人帳號還是進不去EX的話, 可以用上面的方法試試看, 這次加這cookie也是為了這類帳號的使用者們。

另外新增hath_perks key的部分, 主要是有使用者反應這個key會反應使用者限制流量的值, 最免洗的帳號流量限制是5000, 有使用者反應他有這個key才會吃到自己帳號真實的流量限制。 我的帳號不知道是很老了還是其他情況, 就算沒那個key也是能拿到正確的值, 不過因為可能有不少帳號使用者也有上述的情況, 所以這次也一樣新增了這個cookie key, 希望能讓這類帳號使用者能用到自己帳號的流量限制。


這次更新總算是把累積的一些request清掉了, 再來可以清閒一陣子吧, 大概...XD


Ver8.7 更新內容:
  • 新增支援網站 https://www.comicun.com/ 
  • 修復dm5如果該漫畫只有一頁, 下載器很容易下載失敗的bug
  • 設置頁面新增EH / EX站cookie keys: igneous, hath_perks


下載器Demo圖:





介紹:
https://project.zmcx16.moe/?page=mahomangadownloader


環境需求



簡單除錯:
  1. 如果下載失敗, 麻煩先用瀏覽器測試看資源是否存活。
  2. 如果能正常用瀏覽器瀏覽, 麻煩先查看LogFiles資料夾內的log檔案看錯誤訊息為何。
  3. 回報問題時, 麻煩提供有問題的網址以及log內容, 這樣我才有辦法測試找問題原因。



檔案位址:
https://drive.google.com/open?id=1Aiuo7VsRBG-CpC8RkTbLK93SqSKkFBtS

32位元版本:
https://drive.google.com/open?id=1xPegyQXT5_mCweK9h4ZkPUDrStGhSaF2

解壓密碼:zmcx16



免責聲明:
******************
MahoMangaDownloader僅作為學術研究使用,禁止利用本程式行非法用途。

2019年8月29日 星期四

PhotoMosaic-Artifact Ver1.2 更新

上周末把UI刻好了, 這一兩天就是把功能連起來, demo如下:



影片如下 (中間轉換過程有點久, 原本想把中間片段做影片剪輯加速, 後來太浪費時間還是算了QQ)




這次的side project應該就暫時告一段落了~小專案花2個禮拜完工個人覺得還行 (畢竟只能用下班跟放假時間搞阿...), 不過認真說比起之前的 ChaldeaStockObservatory 進度真的順利太多了, 畢竟Electron已經不是第一次碰了, 也不用在卡環境問題就省了超多時間ㄚㄚ。


Ver1.2更新:
  • Implement GUI application
功能:

  1. Make the custom photographic mosaic image
  2. Support video material
  3. Support GUI tool

注意事項:
  1. 輸出圖的尺寸為 輸入圖 * scale,  輸出圖的寬度必須能整除參數col, 高度則必須能整除參數row, 整除後的寬度以及高度即為素材小圖的影像尺寸。
  2. 支援影片跟圖片做為素材圖, 不過如果素材圖的長寬比跟素材小圖不合, 在生成素材小圖時影像會自動被裁切。


程式原始碼: 
https://github.com/zmcx16/PhotoMosaic-Artifact



最後放上這之前做的所有demo成果, 對這tool有興趣的話十分推薦做些有趣的圖玩玩, 尤其是用色色的圖做馬賽克照片最好玩了XDD (逃~~~)





2019年8月18日 星期日

PhotoMosaic-Artifact Ver1.1 更新

這次更新主要就是支援影片作為素材, 只要把影片跟圖片一樣放到material資料夾下, PhotoMosaic-Artifact就會直接讀取影片並擷取小圖作為素材使用, 相關參數: [-video-sampling-ms, seed], -video-sampling-ms為擷取圖片的間隔時間, 預設時間為5000毫秒, 假設一個影片是23分鐘長的話, 總共會擷取276張小圖當作素材使用, 並且每次擷取時都會挑該區間時間的任意一張圖。


第二個修改則是效能改善, 原本算圖片平均顏色方法就是很單純的一個for-loop計算RGB平均顏色, 不過之前有經驗了知道矩陣相關的計算比起自己刻, 用numpy通常會快上不少。 下面是換上numpy後的比較結果(測試樣本為之前的AS圖):
  • Ver1.0:  2:04
  • Ver1.1:  0:44
直接快了2.8倍, numpy真是太神啦XD


另外除了新增支援影片跟改善效能之外, 這次也多加了-tolerance參數, 這個參數預設值為0, 所以在預設情況下每次產生馬賽克照片時輸出的圖都會是一樣的, 如果在不改變material素材的情況下想生成不同的輸出圖, 可以將tolerance稍微調高(0~10 or up), 並選定一個亂數種子(seed), 這樣PhotoMosaic-Artifact就會在容許誤差下亂數選擇不同的素材圖來組成馬賽克照片。


嘛...這次的side project真是異常順利阿, 畢竟跟之前從頭開始自己幹到底不同, 基本演算法已經有得參考, 實際上的功也就是用python重寫, 套一套library就搞定了。 像支援影片也只要套套opencv就搞定, 感覺嘴角都不禁失守了XD


最後來看下這次用影片生成的馬賽克照片吧, 這次選的素材為機動戰艦NADESICO (小時候心中的神作!!!) 素材為動畫TV版1-26 & 電影版, 取樣時間為5秒, 總共從影片產生了7947張素材小圖, 輸出結果如下:

output


原圖



恩...雖然看起來結果不錯, 不過因為這張圖色系比較單調, 所以重複的圖使用得特別多..., 在另外跑一張圖看看:
output


原圖


結果看起來不錯, 不過因為這張圖細節比較複雜, 所以我row跟col就調得比較高, 避免太多方塊不好看, 至於重複問題一樣還是有, 這個可以直接調-g參數搞定, 不過我懶得繼續try就先這樣就好XD

用影片生成馬賽克照片還有一個問題, 那就是影片截圖太花時間了..., TV 26集動畫 + 電影版影片總長度大概11小時, 截取7947張圖總共花了2小時多, 而產生row=100, col=100的馬賽克照片也才花7分鐘左右, 大部分時間都花在生成素材小圖上..., 不知道還有沒有其他方法可以改善影片取圖的效率問題...。


在來下一階段就是生個GUI Tool啦, 因為這部分要等我哥把icon圖畫出來才能收尾, 所以這塊就慢慢做了, 或是在想想還有什麼好玩的side project可以先動工 :)


Ver1.1更新:
  • 支援影片素材 (mkv, mp4, avi)
  • 效能改善
  • 新增參數(tolerance, random seed, video resampling interval)
功能:

  1. Make the custom photographic mosaic image
  2. Support video material
  3. Support GUI tool (TODO)

注意事項:
  1. 輸出圖的尺寸為 輸入圖 * scale,  輸出圖的寬度必須能整除參數col, 高度則必須能整除參數row, 整除後的寬度以及高度即為素材小圖的影像尺寸。
  2. 支援影片跟圖片做為素材圖, 不過如果素材圖的長寬比跟素材小圖不合, 在生成素材小圖時影像會自動被裁切。


程式原始碼: 
https://github.com/zmcx16/PhotoMosaic-Artifact


2019年8月14日 星期三

PhotoMosaic-Artifact Ver1.0 release

週日的時候花點時間把mosaic-generator (php)用python重新implement一遍, 因為演算法蠻簡單的, 所以真正的工作頂多就是把 GD library的方法找python的PIL library替代用, 另外就是把MySQL整個拔掉了, 為什麼作者當初要用MySQL我真的覺得超懸..., 唯一能想到的就是為了省記憶體, 畢竟要是素材圖超級多的話記憶體可能會吃不少, 不過每個素材圖也只需要記錄檔案名跟RGB值, 在怎麼樣記憶體用量也應該還好... 真心不懂QQ

把MySQL拔掉, 直接把素材圖資訊存到記憶體, 效率真的天差地遠, 以我下面那張做6400*4800, 素材圖282張的情況, 我用python寫的tool只需要2分鐘, 然後原版的php tool + MySQL要跑1小時27分..., 真的是天差地遠, 到底作者當初為什麼選擇用DB做這tool真是個謎阿...。

至於GD庫換成PIL庫的差異部分, 就是單純找類似功能的函式替代, 有差異就在自己手動解決, 沒什麼好講的XD

再來就是實際比較一下啦! 用python重新實作的tool跟原版php的差異如何, 畢竟用的影像函式庫也不同, 總還是會有些許不一樣, 這裡先用上次做的EVA圖比較看看:

mosaic-generator


PhotoMosaic-Artifact


原圖



恩....雖然看起來品質差不多, 可是我覺得明日香右眼跟嘴巴是mosaic-generator做的比較好, 輪廓比較明顯, 雖然應該只是運氣問題, 不過還是有點不甘心啊!!

既然如此就在來比較另一張圖吧, 選的圖是以前超喜歡的工畫堂音樂遊戲天使小夜曲:





比較之前照上次慣例先來張細緻點的圖(-row 192 -col 256 -scale 10 -gap 4 -e 27):

PhotoMosaic-Artifact


成果非常Great!!  不過這麼細緻的情況小圖就不清楚了, 為了馬賽克之美, 把row跟col各減一半, 然後一樣參數的情況下也跑mosaic-generator比較看看:


mosaic-generator


PhotoMosaic-Artifact


Perfect!! 看起來都很讚, 不過PhotoMosaic-Artifact看起來顏色稍微淡了點, 這問題主要是因為在做enhance colors時, PIL庫並沒有完全匹配GD庫的函式, 所以這邊我在做enhance colors合併時, 是用alpha值去代替合併程度, 如果把alpha值往上調就可以達到顏色更匹配原圖的, 這邊就不額外嘗試了, 現階段的結果已讓我足夠滿意XD

最後就是future work啦, 目前想好確定要做的有下面兩項:

1. 支援影像素材
2. 製作簡單的GUI應用程式
3. 優化效果 (optional)

第一點的話就是想要讓tool可以直接吃影像檔, 然後再根據使用者選的圖做馬賽克圖片, 舉例來說就是素材資料夾塞個一季13話的動畫, 最後產生出來的馬賽克圖就是這一季的回憶內容!!

至於第二點GUI應用程式一方面是順便練練前端技能的熟練度, 而且對一般使用者來說command line還是不親切, 有GUI應用程式還是比較好~。

第三點的話感覺有不少可以做, 像是有哪些filter可以用, 還有就是目前的演算法在選素材時, 是以average color決定哪張圖最適合, 可是以少數圖片來說, 用dominant color是比較適合的, 這塊就還要在試試看才知道, 想了解可以參考這裡

嘛...總之先休息個兩天, 之後再來慢慢做吧XD

功能:

  1. Make the custom photographic mosaic image
  2. Support video material (TODO)
  3. Support GUI tool (TODO)

程式原始碼: 
https://github.com/zmcx16/PhotoMosaic-Artifact


阿阿, 最後來還個願。  我FGO終於用送的石頭抽到阿比了!!!  前面幾篇的許願有傳達到阿, 感謝神~~~!!!

2019年8月11日 星期日

PhotoMosaic-Artifact開發計畫 (1)

這周放假耍廢的過程中, 忽然想到個想做的東西了。 之前有架個介紹自己side project的網站, 雖然基本上是完工了, 可是首頁以外的其他頁就是以介紹資訊為主, 背景整個白的感覺有點單調, 不過要是直接放一張圖或是某種顏色又會影響視覺資訊, 想著想著就想到, 自己以前買過一款馬賽克拼圖, 如果用馬賽克照片加上透明處理, 感覺會是很不錯的網頁素材。

先來穿插個不相關的回憶事件(藉機推坑?), 過去有段日子自己十分著迷於拚圖, 不像CG或繪畫那樣單一張圖已經是成品, 那種一塊一塊組織起來的圖不僅別有特色, 組裝拼圖的過程也是種享受(or 折磨?)。 過去幾年收藏&組裝的拚圖中, 最讓我印象深刻的就是研究所考試那段時間入手的化物語馬賽克風格拚圖了, 請看下面這張圖:





這1000片的拚圖總共是由3255張CG組合起來的, 當時看到這拚圖就決定立馬入手, 那段時間剛好是辭掉公務員, 專心準備研究所考試的時候, 當時每天利用讀完書的時間(大概PM10:00~12:00)去拚這個拚圖, 然後花了我一個多月的時間才拚完...(汗)。

馬賽克拼圖跟一般拚圖最大的不同在於, 一般拚圖可以先用顏色去分組, 然後就可以拼湊一大塊一大塊, 可是馬賽克風格的拚圖顏色根本是亂跳的, 沒辦法用顏色去拚..., 所以後來我都是靠那3000多張cg去分類, 拼圖2~3片當成一小塊, 就這樣一堆一小塊的分組去慢慢拼出來, 當時真的拚到某種不知名的東西消失又出現的感覺了XDD 

當然最後完成時也是前所未有的爽, 認真說花這麼多時間換這爽度也算蠻值得的(?)。


回歸正題, 想起這段記憶後, 就想到這個應該有不少online網站或工具可以幫人轉這種馬賽克相片圖吧, 找了一下果然找到了,  像是下面這個網站就可以幫人製作馬賽克相片:

http://www.easymoza.com/index.php

不過我想要的如果用線上工具就太麻煩了, 畢竟組成一張大相片的素材圖少則幾百張, 多則幾千幾萬張, 這種需求不可能免費給你使用, 所以當然就只能自己做了, 首先決定去github上找找看有沒有大神釋出好用的tool (畢竟影像處理我幾乎不懂啊, 要從零開始也太恐怖...)。

找了一下大致上有找到兩款看起來還算能用的:
  1. https://github.com/codebox/mosaic
  2. https://github.com/eflorit/mosaic-generator




比較了一下, mosaic是用python寫的, 而mosaic-generator則是用php, 雖然常理上我應該二話不說直接選python, 不過試用後發現問題很大, mosaic本身就是很單純的幫你用提供的素材去組圖, 並沒有做顏色協調處理, 所以要是素材圖的樣式太少, 生成圖的顏色就會整個失真掉, 就像下面這樣:


原圖


mosaic轉換後



因為自己影像處理幾乎沒底子, 所以決定直接試下一個mosaic-generator, 這個tool除了有改善顏色問題的參數可以調以外, 還有額外處理讓相鄰圖片不重複, 以效果來說十分的出色, 一樣的圖片跟素材圖, 轉換出來的效果如下:



上面這張圖是拚圖極細緻的情況生成的圖, 不過這樣雖然大圖好看, 不過每個小圖都只會是糊糊的顏色, 就沒有馬賽克相片的美了, 下面這張則是把小圖放大, 解析度調低的結果, 就很有馬賽克照片的感覺了。





上面測試的結果還不錯, 再來就要玩真的了, 把我之前蒐集的EVA畫冊跟遊戲CG作為素材, 再做一張EVA的馬賽克照片, 因為這次的素材非常大, 我又同時放大原圖跟小圖解析度, 這次轉換就不像上面那張2~3分鐘就好, 光是轉換就花了快一小時, 結果果然跟我想像的一樣好:


原圖




mosaic-generator轉換結果





這張輸出不僅僅是大圖精細, 連小圖都很清楚, 想看原圖可以看下面連結:

https://i.imgur.com/RVts2q6.jpg


再來就是開發計畫了, 不過與其說開發計畫不如說是改良計畫吧, 這個tool雖然本身很不錯, 不過個人覺得還有些東西可以做:

1. 使用環境要裝php + MySQL, 明明有先把素材圖轉成小圖存成檔案了, 為什麼還要使用DB去處理, 這也太搞工..., 感覺是為了省I/O跟記憶體的關係才這樣做..., 這塊打算來想想該怎麼優化, 認真看了下code會這樣做主要是要儲存各小檔的平均顏色訊息, 這樣之後組圖時才能找到最適用的小圖, 這邊打算換用SQLite或是直接在記憶體處理掉, 不然為了這tool要裝MySQL真的有點瞎...。

2. 基本上對php不是很熟, 改造完之後也想加上GUI做成跨平台的應用程式, 這邊打算整個用python改寫, GUI則是一樣用electron做。

3. 影像尺寸沒有參數化, input只支援jpg, 這邊就是跟著補完變更好用些, 然後看有沒有更多優化功能可以做。

4. 不僅僅是支援圖片素材, 我想讓tool也能直接處理多個影像檔, 直接給tool一整套動畫, 然後就能用這些動畫當素材做出想要的馬賽克照片, 


暫時想到的就是這些吧, 原本是想網站的素材用什麼好, 結果不知不覺就變成為了素材去做tool了, 人生真妙XD


2019年8月3日 星期六

MahoMangaDownloaderVer8.6更新






昨天改版今天又改版!!!  不過今天改版是喜事, EX復活啦!!!





轉換心情回來, 測試了一下EX復活後雖然新增漫畫正常, 不過搜尋死掉了, 主要是伺服器會擋http, 下載器前一版本為止在組搜尋字串時還是用http才會踩到雷...。



Ver8.6 更新內容:
  • 修復EX復活後會搜尋失敗的問題
  • 修復過濾關鍵字要是空白還是會載入預設關鍵字問題, 且設定過濾關鍵字預設改為空白


下載器Demo圖:





介紹:
https://project.zmcx16.moe/?page=mahomangadownloader


環境需求



簡單除錯:
  1. 如果下載失敗, 麻煩先用瀏覽器測試看資源是否存活。
  2. 如果能正常用瀏覽器瀏覽, 麻煩先查看LogFiles資料夾內的log檔案看錯誤訊息為何。
  3. 回報問題時, 麻煩提供有問題的網址以及log內容, 這樣我才有辦法測試找問題原因。



檔案位址:
https://drive.google.com/open?id=1GsxsunArYDjdp2di_mVAHjhUpTCw5h15

32位元版本:
https://drive.google.com/open?id=1fx-mAqizoYPsXfQ36tbfdo7z7uD62WJL

解壓密碼:zmcx16



免責聲明:
******************
MahoMangaDownloader僅作為學術研究使用,禁止利用本程式行非法用途。

2019年8月1日 星期四

MahoMangaDownloaderVer8.5更新

這次會挑平日更新主要是因為這周末打算回老家一趟, 由於回老家後還有打不完的機戰等著我, 所以就乾脆利用平日下班時間趕緊做一做這次的更新了~。

更新重點一樣是因為EX安息了, 有網友分享了一篇其他相關的資源網整理文, 研究了一下決定先支援兩個資源數還算不少的網站。當作是以後EH站說不定哪天安息的事前準備..., 只可惜除了EH跟N站, 幾乎其他資源網都沒有支援原始檔名, 像這次新增的兩個網站也只有英文, 這樣不管是搜尋還是整理資源都會很麻煩...不過也沒辦法就是了QQ


最後就是平常的題外話, 首先在Ver8.4版有網友好心借我銀牌帳號找Cookie原因, 不過後來想想總不能以後都跟網友借帳號去解bug, 就決定抖內個2000NT換個銀牌帳號回來, 一方面算支持站方, 同時有空也能找一下以前漏掉的資源, 也方便以後debug, 順便解解人生第一次買比特幣的成就。

不過用了有牌帳號後發現一件晴天霹靂的事, 有牌帳號EH站就不會只看IP了, 所以被ban IP就只能乖乖等冷卻...,超糟糕...。 目前是打算如果有需要大量下載的話, 就優先以沒牌帳號的Cookie去下載, 然後下載不了的高權限的資源在換成有牌的Cookie, 感覺也只能如此了...。

針對EX的安息, 下載器的新Feature目前打算先告一段落, 在來下載器會以有問題回報解bug為主, 之後會優先自己另一個side project: ChaldeaStockObservatory



Ver8.5 更新內容:


下載器Demo圖:





介紹:
https://project.zmcx16.moe/?page=mahomangadownloader


環境需求



簡單除錯:
  1. 如果下載失敗, 麻煩先用瀏覽器測試看資源是否存活。
  2. 如果能正常用瀏覽器瀏覽, 麻煩先查看LogFiles資料夾內的log檔案看錯誤訊息為何。
  3. 回報問題時, 麻煩提供有問題的網址以及log內容, 這樣我才有辦法測試找問題原因。



檔案位址:
https://drive.google.com/open?id=1zzw30F0i4XazQV2s5nOHfd_0cfoRrFvv

32位元版本:
https://drive.google.com/open?id=15f6MYRl-xLc_ThwdVgOkddvM-21C5oG-

解壓密碼:zmcx16



免責聲明:
******************
MahoMangaDownloader僅作為學術研究使用,禁止利用本程式行非法用途。