作者jhangyu (jhangyu)
看板DSLR
標題[閒聊] Halcyon,自己開發GPU加速的超快看RAW軟體
時間Sun Sep 13 21:17:07 2026
由於市面上一直沒有好用,專門用來快速過片的看RAW軟體
很久以前買的Fastpicture Viewer,現在作者已經完全失蹤無法啟用
macOS買過幾套,Photo Mechanic最接近,速度夠快但UI難用,價格也很貴
而且對沒有內嵌全尺寸jpg的RAW就沒轍
剩下所有App都是用LibRaw那套緩慢的CPU解碼,讀圖超慢,切一張要等2~4秒
而且解出來的顏色超怪超灰
無奈之下年初只好決定自動開始動手「詠唱」一個出來
先從解碼kernel開始改造:
把LibRAW和Adobe DNG SDK後端的去馬賽克和光學校正的耗計算資源的步驟用halide重寫
以同時支援macOS的Metal,和Windows/Android/Linux支援的Vulkan
經過多次試錯後目前已經成功將沒有預覽內嵌的Sony ARW檔案解碼時間壓在73ms
然後再把kernel串進用Flutter寫的App UI
畫UI、定義資料流向、改記憶體調度策略,讓解碼過程儘可能沒有瓶頸
目前已經成功實現可以1秒解碼27-33張RAW檔 (檔案要放SSD,要不然讀取速度會變成瓶頸)
可以逼近某些軟體純讀JPG的顯示速度了!
App的長相如下:
https://bit.ly/3V8c0EQ
目前做的功能主要是快速篩選:
快速鍵可以按x標記要刪除的照片; 或是按s標記要特別複製的照片
然後可以按左下角的Action
將剛剛標記的照片"刪除"(Recycle模式是移動到".trash"資料夾)
或是移動到其他位置,或是匯出成其他尺寸和格式
https://bit.ly/4h1UEAP
同時也有快速EXIF批次重新命名的功能:
https://bit.ly/4xW7Hv0
也可以切換佈景主題:
https://bit.ly/3T7x9yr
最後是要特別注意的效能設定的地方:
由於解RAW真的很吃記憶體
一個RAW解壓後48mb-> 展開成RGB三層*3 -> 一個解碼槽基本上需要 48*(1+3) = 192mb
所以目前App預設平行解碼數為2 預估解碼時所需峰值記憶體為800m~1G
解碼完會自動吐回
https://bit.ly/46nJTUF
如果記憶體夠,想要更快的解碼速度可以自己改成4或是8
不過可能尖峰會用到4~5G記憶體就是,要特別小心
主要功能大致就是這樣,把挑片的核心功能做到最快
希望能幫到一些常常需要過片挑片的攝影師們~
如果想要閱讀其他細節可以看這裡:
https://github.com/jhangyu/halcyon/blob/main/README.zh-TW.md
我就不在這邊多廢話了
下載的話可以直接從Release這邊下載最新版
https://github.com/jhangyu/halcyon/releases
同時支援Windows/macOS(x64+arm)/Linux
(因為沒有買Apple開發者簽名, 使用macOS的大大要記得去隱私那邊設定強制打開)
未來有打算再增加編譯Windows Arm和Linux的Arm架構
至於手機端的話...是有設計UI了
但...應該沒什麼人會用手機挑RAW吧?
之前測試Android即使有用GPU解碼一張似乎也要500ms(半秒)
可能之後有機會有需求再做吧~
希望大家可以試用看看!
我會繼續想想怎麼最佳化記憶體的~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.175.174 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/DSLR/M.1789305432.A.80B.html
※ 編輯: jhangyu (59.127.175.174 臺灣), 09/13/2026 21:26:19
1F:推 sapporo1075: Apple M2 Max 顯示未預期的結束,無法使用。 09/13 22:33
macOS預設有gatekeeper, 可以用下面的方式繞過:
https://electrify.tw/disable-macos-gatekeeper
重新啟動後再啟動app,就可以去隱私那邊強制開啟app
※ 編輯: jhangyu (59.127.175.174 臺灣), 09/14/2026 00:20:12
2F:推 Jokering5566: 厲害,明天來試試,raw 的預覽真的好慢,你這個有 09/14 02:32
3F:→ Jokering5566: 解決痛點 09/14 02:32
4F:→ n61208: 快速看RAW我都用免費開源的Honeyview 09/14 05:03
5F:推 keepgoingKH: 好厲害!先推 09/14 10:14
6F:→ victoryuy: 我也是用honeyview 感謝開發新程式 09/14 10:48
7F:→ jhangyu: Honey之前好像對無內嵌jpg raw沒轍? 09/14 11:22
8F:→ jhangyu: 還是他後來改了? 09/14 11:22
9F:推 n61208: 他有出2.0版本 但不確定有沒有無jpg raw預覽 09/14 12:03
10F:推 user1120: 推 09/14 17:53
11F:推 Taichun318: 推 09/14 22:58
12F:推 helixc: 翡翠 有鳥就給讚 09/14 23:35
13F:推 a2316574: honeyview已經停止開發了,開發商現在推的是免費/ 09/15 01:18
14F:→ a2316574: 買斷並行的BandiView 09/15 01:18
15F:推 CGary: 多謝 輕量的軟體對我這種不希望app很肥的人很友善 09/15 02:28
16F:推 andy199113: 太猛了吧 厲害 09/15 02:30
17F:→ diablohinet: 買斷了BandiView 但開HEIF還是感覺有點慢 不知道是不 09/15 08:38
18F:→ diablohinet: 是因為我電腦太爛的關係 09/15 08:38
19F:→ jhangyu: HoneyView我自己試還是CPU解碼 速度不快 09/15 10:32
20F:→ jhangyu: 如果不滿意軟體外殼的可以自己Fork後 09/15 10:32
21F:→ jhangyu: 接我的ceyx解碼核心專案 09/15 10:32
22F:→ jhangyu: 介面參數都是完整的FFI 09/15 10:32
23F:→ jhangyu: 另外我有把目前所有常見的圖片解碼器都包進去了 09/15 10:32
24F:→ jhangyu: HEIF, WebP, AVIF, JPEG XL全部都能解 09/15 10:32
25F:推 steward68: 太神啦~快速看Raw的軟體 Adobe Bridge可以算嗎? 09/15 12:49
26F:→ jhangyu: Bridge應該和快速扯不上邊XD切照片都要一秒多 09/15 14:44
27F:推 n61208: Bandiview呢? 09/15 16:23
28F:推 Ryder011186: 試了一下,Nikon的高效率壓縮RAW檔還是沒辦法正常解 09/16 09:19
29F:→ Ryder011186: 碼查看(D750&Z6III),不過還是感謝神人大大願意花時 09/16 09:19
30F:→ Ryder011186: 間開發這個工具來造福大家~ 09/16 09:19
Nikon的HE/HE*格式RAW似乎是用TicoRAW格式
目前正式版的libraw還不能解,不過根據這個github討論串:
https://github.com/LibRaw/LibRaw/pull/826#issuecomment-5643255400
libraw官方說他們會在今年秋天釋出支援HE/HE*的正式版
到時候可以移植過來看看
31F:推 s88388: M1 max 用 bridge 比較快 09/16 12:45
我是M3 Ultra, 我覺得bridge遠未達我的標準, 又胖又慢, 用完一次就移除
32F:推 yoyohu: 我win10 無法使用 nef arw都顯示無法讀取不支援 09/17 06:00
我沒在Win 10測試過?不確定失敗的原因, 因為win11似乎都可以正常解
可能要的話要看error log才能知道原因了
33F:推 a2316574: Nikon以前官網有提供NEF Codec解碼器,安裝後就可 09/17 17:05
34F:→ a2316574: 以預覽,但不知道為什麼後來移除掉了。我這邊有以 09/17 17:05
35F:→ a2316574: 前下載的備份,用mega 上傳,需要請自用 09/17 17:05
37F:推 a2316574: 補充一下,我的環境是Z8+Bandiview付費版,高壓縮r 09/17 18:09
38F:→ a2316574: aw,可正常使用 09/17 18:09
39F:→ jhangyu: 不能解的話我看一下codec,我移植進去 09/18 18:31
40F:→ jhangyu: 如果有NEF sample檔案可以提供測試就更好了 09/18 18:32
更正一下, 官方釋出的codec是編譯好的檔案, 不是原始碼, 不能直接拿來使用
目前可以先從有人實作的HE/HE* decoder code進行移植測試
41F:推 Derp: 跪爛 09/18 21:27
※ 編輯: jhangyu (59.127.175.174 臺灣), 09/19/2026 23:11:56