Tôi hiện đang làm việc trên một ứng dụng cho phép người dùng phát (tự động cuộn) qua một loạt hình ảnh cục bộ. Thông thường sẽ có năm hoặc sáu trên màn hình cùng một lúc.Tăng tốc tải hình ảnh từ đĩa trong ứng dụng biểu mẫu windows (C# .net)
Nút cổ chai lớn tại thời điểm này có vẻ là tải dữ liệu hình ảnh thực tế từ đĩa. Một chủ đề hẹn giờ gọi cho các hình ảnh được cập nhật mỗi 1/6 của một giây và ứng dụng đang đấu tranh để theo kịp với tốc độ đó. Mỗi hình ảnh có kích thước khoảng 25Kb.
Tôi đã cố gắng tạo bộ đệm cuộn để thử và tải trước hình ảnh nhưng điều này cũng bị bắt kịp với chính nó nên cuối cùng cũng bị chậm lại.
Mỗi nhịp của bộ đếm thời gian, tôi lặp qua sáu placeholders hình ảnh tải hình ảnh tiếp theo bằng cách sử dụng phương pháp tiêu chuẩn
Image img = Image.FromFile("filename");
nhưng nghĩ ai đó có thể biết một cách nhanh hơn để có được những hình ảnh hết đĩa.
Có từ 500 đến 20.000 hình ảnh trong mỗi bộ trong số sáu bộ sao cho quá lớn để tải toàn bộ nội dung vào bộ nhớ khi bắt đầu.
Nếu có ai đề xuất cách nhanh hơn để kéo những hình ảnh này qua, nó sẽ được đánh giá cao.
Chỉnh sửa để thêm một số chi tiết về luồng ứng dụng.
Được rồi, đây là những gì đang diễn ra:
Nút lượt truy cập của người dùng nhấn 'phát'. Bộ hẹn giờ bắt đầu với thời gian chờ là 1/6 giây.
hẹn giờ gọi lại:
Update image index (_index++)
for each viewer in list of visible viewers (the forms to display images)
{
get the filename from the id stored in the viewer
check to see if the file exists
if it does exist,
create new bitmap from image
and return that image
otherwise return null
if returned image isn't null, display it on screen
}
Đó rõ ràng là đi qua một vài lớp - hình ảnh tải đi vào trong lớp dịch vụ và sau đó đi này thông qua để trình bày và sau đó đến giao diện người dùng nhưng đó là ý chính của những gì đang xảy ra .
Tôi đã viết một ứng dụng thử nghiệm nhanh để kiểm tra điều này và ImageFast nhanh hơn 11 triệu bọ ve. Từ tập tin của hình ảnh mất 19 triệu trong khi ImageFast chỉ mất 7 triệu. –
Cảm ơn kết quả kiểm tra, David :) – bernhof
Không thành vấn đề. Tôi thích kết quả của ImageFast. –