Vì một số người trong các bình luận câu hỏi liên tục nói với tôi rằng nó khá tầm thường, tôi thực sự đã làm điều đó: Một ứng dụng sắp xếp các hình ảnh trong thư mục hiện tại bằng cách để so sánh trực tiếp thực tế với người dùng . 1
Viết bằng C # cho .NET 2. Cũng hoạt động trên Mono (đã thử nghiệm trên Linux). Yêu cầu dcraw trên PATH (có thể tải xuống được thực thi cho Windows hoặc OS X tại đây ).
Hiện tại tương tác người dùng rất thô sơ. Điều này có thể thay đổi. Ngoài ra mã là một mớ hỗn độn xấu xa như thường lệ với một công việc hack như vậy.
Ứng dụng phải được bắt đầu trong một thư mục chứa các hình ảnh để sắp xếp. Sau đó, nó tiến hành tải tất cả các hình ảnh có thể tìm và xử lý (JPEG, GIF, PNG, BMP được hỗ trợ nguyên bản, tất cả các định dạng khác đều được hỗ trợ bởi dcraw hoặc bỏ qua nếu không). Giữ số lượng hình ảnh hợp lý, vì mọi hình ảnh đều được tải sẵn trong bộ nhớ để tăng tốc độ hiển thị - Tôi đã thử khởi động nó trên một thư mục với khoảng 600 hình ảnh và chấm dứt ở mức sử dụng bộ nhớ khoảng 2 GiB.
Sau đó, bạn có được một khung nhìn hai khung với một hình ảnh bên trái và bên phải. Nhấp vào cái mà bạn cho là tốt nhất trong hai. Sau đó bạn sẽ nhận được hai hình ảnh mới. Tiếp tục cho đến khi hoàn thành. Bạn có thể đóng chương trình nếu bạn muốn, nó sẽ tiếp tục ở nơi bạn rời đi.
Sau khi tất cả các so sánh cần thiết đã được thực hiện 2 kết quả có thể được nhìn thấy:
Nó có danh sách các hình ảnh được sắp xếp ở bên trái với thứ hạng cao nhất ở trên cùng và thứ hạng thấp nhất ở phía dưới.
Những việc cần làm:
- Cho phép chọn hình ảnh để sắp xếp.
- Giải quyết vấn đề rằng ảnh chân dung luôn được hiển thị theo hướng ngang (ít nhất là đối với ảnh thô. Dcraw cho phép xoay nhưng không thể tự động thực hiện và tôi không thấy cách dễ dàng để tìm ra bên ngoài).
- Giảm sử dụng bộ nhớ cho số lượng lớn hình ảnh.
- Xáo trộn các hình ảnh trước để các hình ảnh gần giống nhau ít có khả năng được so sánh trực tiếp với nhau.
- Thay đổi đồng bộ hóa giữa luồng sắp xếp và giao diện người dùng để không còn dựa vào
Thread.Sleep
và bỏ phiếu mà sử dụng các phương thức đồng bộ hóa phù hợp.
- Thêm bản xem trước 1: 1 (hoặc ít nhất là bản lớn hơn). Hiện tại điều này không thể được sử dụng để đánh giá mọi thứ ở cấp độ pixel.
Bây giờ là 5:26, vì vậy tôi ngừng hack ngay bây giờ.
Mã nguồn có thể được tìm thấy trong kho SVN của tôi và được phát hành theo giấy phép MIT. Tôi hoan nghênh các bản vá ;-)
Hình ảnh trong ảnh chụp màn hình ở trên là của riêng tôi.
1 Tất nhiên nó không tầm thường như những người khác muốn làm tôi tin. Sau một thời gian dài vật lộn với Libraw, tôi chỉ đơn giản là đi theo con đường dcraw. Không đẹp, nhưng hoạt động với số lượng mã tối thiểu.
2 Đây là thứ tự của n log 2 n trong đó n là số lượng hình ảnh được so sánh - vì vậy, trong 20 hình ảnh bạn có thể mong đợi một cái gì đó khoảng 20 × 4.3 85 so sánh - tôi biết, đó không phải là một con số nhỏ. Đối với 300 hình ảnh bạn đã đề cập, bạn nhận được khoảng 2400. Con số thực tế phải được thực hiện thủ công là (a) khác nhau (vì độ phức tạp bỏ qua yếu tố tuyến tính) và (b) theo như tôi quan sát cho đến nay, nhỏ hơn. Để tránh sự không nhất quán, người dùng sẽ không bao giờ được nhắc hai lần trên cùng hai hình ảnh (theo thứ tự) và không bao giờ được nhắc với cùng một hình ảnh ở cả hai bên.