У меня есть MemoryStream, содержащий байты изображения с PNG-кодированием, и вы хотите проверить, есть ли точный дубликат этих данных изображения в каталоге на диске. Первым очевидным шагом является поиск файлов, соответствующих точной длине, но после этого я хотел бы узнать, что является наиболее эффективным способом сравнения памяти с файлами. Я не очень опытен, работая с потоками.Самый эффективный способ сравнения memystream с файлом C# .NET
У меня было пару мыслей по этому вопросу:
во-первых, если я мог бы получить хэш-код для файла, он будет (предположительно) будет более эффективным для сравнения хэш-кодов, а не каждый байт изображения. Аналогично, я мог бы сравнить только некоторые байты изображения, давая ответ «достаточно близко».
А потом, конечно, я мог бы просто сравнить весь поток, но я не знаю, как бы быстро это было.
Каков наилучший способ сравнить MemoryStream с файлом? Байт по-байту в цикле?
«... искать файлы, соответствующие точной длине ...«Внимание: размер файла на диске, возможно, будет отличаться от размера потока ... Дисковый файл может иметь встроенную миниатюру, которой нет в потоке памяти ... Файлы изображений могут быть немного goofy вот так :) – Rusty
В моем случае я создаю файлы изображений на диске тоже, так что это должно быть безопасно? – devios1
Да FileStream.Length == FileInfo.Length ... но если вы используете Image.FromFile и сохраните его к MemoryStream они не будут иметь одинаковую длину ... я обычно работаю с объектами Image, следовательно, моя забота. – Rusty