由於問題評論中的某些人反復告訴我這很瑣碎,因此我實際上做到了:一個應用程序,通過將實際的頭對頭比較留給用戶來對當前目錄中的圖像進行排序。 1 sup>
用C#for .NET 2編寫。它也可以在Mono上運行(到目前為止已經在Linux上進行了測試)。在PATH上需要 dcraw(可在此處下載Windows或OS X的編譯的可執行文件)。
當前,用戶交互非常初級。這可能會更改。同樣,使用這種hack-job,代碼也像是一團糟。
該應用程序必須在包含要排序圖像的目錄中啟動。然後,它將繼續加載它可以找到和處理的所有圖像(本地支持JPEG,GIF,PNG,BMP,dcraw支持所有其他格式,否則不跳過)。保持合理的圖像數量,因為每個圖像都已預先加載到內存中以加快顯示速度–我嘗試在包含約600張圖像的文件夾中啟動它,並以大約2 GiB的內存使用量將其終止。
可獲得兩窗格視圖,左右兩邊都有一個圖像。單擊您認為兩者中最好的一個。然後,您將獲得兩個新圖像。繼續直到完成。您可以根據需要關閉程序,它將從您上次中斷的地方繼續。
在完成所有必要的比較後, 2 sup>可以看到結果:
它在左側具有圖像的排序列表,頂部圖像的列表最高,底部圖像的列表最低。 / p>
Todo列表:
- 允許選擇要排序的圖像。
- 解決了肖像始終以橫向顯示的問題(至少對於原始圖像而言)圖像。dcraw允許旋轉,但不能自動旋轉,我看不到從外部找到旋轉的簡便方法。
- 減少大量圖像的內存使用量。
- 請預先對圖像進行隨機播放,這樣幾乎不會直接比較彼此幾乎相同的圖像突發。
- 將排序線程和UI之間的同步更改為不再依賴於
Thread。睡眠
和輪詢,但要使用適當的同步方法。 - 添加1:1預覽(或至少更大的預覽)。當前這不能用於判斷像素級別的事情。
這裡是5:26,所以我現在不再對此進行黑客攻擊了。
可以找到源代碼在我的SVN存儲庫中,並根據MIT許可發布。我歡迎補丁;-)
上面截圖中的圖像是我自己的。
1 sup>當然,它並不像其他人那麼瑣碎想讓我相信。經過與Libraw的長期鬥爭,我乾脆走了dcraw路線。不是很漂亮,但是可以用最少的代碼來工作。
2 sup>這是 n log 2 sub> n 其中, n 是要比較的圖片數量–因此,對於20張圖片,您可以期望大約20×4.3≈85個比較–我知道,這不是一個小數目。對於您提到的300張圖像,您將獲得2400張左右。必須手動執行的實際數字是(a)不同(因為複雜度忽略了線性因子),而(b)據我觀察到的較小。為避免不一致,將永遠不會在同一張兩張圖片(兩次訂購)上兩次提示用戶,也永遠不會在兩面都提示同一張圖片。