|
Сравнение 2х картинок
|
|||
---|---|---|---|
#18+
День добрый. Как сравнить 2 JPG файла? Думал, что GetHashCode поможет мне, но метод выдает всегда разные значения для одного файла. Нашел такой способ: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Но какое-то сомнительное занятие пробегать по всем пикселям, учитывая, что картинок тысячи и проверка проводится каждые 10 минут. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2019, 13:56 |
|
Сравнение 2х картинок
|
|||
---|---|---|---|
#18+
Для объектов ссылочного типа не переопределенный метод GetHashCode возвращает хеш-код основанный на адресе объекта в памяти, то есть создав 2 одинаковый объекта ссылочного типа (class) у них будет разный хеш-код, потому, что каждый экземпляр хранится отдельно, но если две ссылки указывают на один объект, значение будут равны. Переопределите метод GetHashCode. А вообще для сравнения больших файлов лучше использовать не хеширование, а контрольную сумму типа CRC32 или другие подобные алгоритмы. Если переопределяете метод GetHashCode переопределите сразу метод Equals(). Типа значения поддерживают хеширование из коробки, но базовый метод адски тормозной, по этому, лучше его тоже переопределять ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2019, 14:03 |
|
Сравнение 2х картинок
|
|||
---|---|---|---|
#18+
Roman MejtesДля объектов ссылочного типа не переопределенный метод GetHashCode возвращает хеш-код основанный на адресе объекта в памяти, то есть создав 2 одинаковый объекта ссылочного типа (class) у них будет разный хеш-код, потому, что каждый экземпляр хранится отдельно, но если две ссылки указывают на один объект, значение будут равны. Переопределите метод GetHashCode. А вообще для сравнения больших файлов лучше использовать не хеширование, а контрольную сумму типа CRC32 или другие подобные алгоритмы. Если переопределяете метод GetHashCode переопределите сразу метод Equals(). Типа значения поддерживают хеширование из коробки, но базовый метод адски тормозной, по этому, лучше его тоже переопределять я затупил. По первой ссылке в гугле нашел метод GetHashCode и не стал читать его описание, подумал, что для одной картинки всегда будет один результат. Сейчас уже понимаю, что метод не подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2019, 14:10 |
|
Сравнение 2х картинок
|
|||
---|---|---|---|
#18+
Супер_ПавКак сравнить 2 JPG файла?а почему не музыкальный файл? Сравниваем образы, фото, силуэты, пиксели, компрессию? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2019, 14:38 |
|
Сравнение 2х картинок
|
|||
---|---|---|---|
#18+
Petro123Супер_ПавКак сравнить 2 JPG файла?а почему не музыкальный файл? Сравниваем образы, фото, силуэты, пиксели, компрессию? на самом деле не важно какой файл. Просто в моем случае это JPG. Но мне не важны детали, которые различают файлы, важна контрольная сумма ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2019, 15:07 |
|
Сравнение 2х картинок
|
|||
---|---|---|---|
#18+
Супер_Павважна контрольная суммаона строится по деталям. Иначе размер файла сравнивайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2019, 15:12 |
|
Сравнение 2х картинок
|
|||
---|---|---|---|
#18+
[quot Супер_ПавНо мне не важны детали, которые различают файлы, важна контрольная сумма[/quot] https://www.google.com/search?q=C# file hash ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2019, 06:12 |
|
Сравнение 2х картинок
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2019, 12:40 |
|
Сравнение 2х картинок
|
|||
---|---|---|---|
#18+
контрольная сумма CRC32 Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2019, 13:07 |
|
Сравнение 2х картинок
|
|||
---|---|---|---|
#18+
CRC32 медленно считается. В инете нашел алгоритм попроще. Если в инете не наврали, то используется для расчет хэша строк у МС в С++. Код: plaintext 1. 2. 3. 4. 5.
Я слегка модифицировал под расчет хэша заданного блока памяти Код: plaintext 1. 2. 3. 4. 5. 6.
Думаю под C# несложно переписать. Можно переделать на 64 бита, просто заменить uint32_t на uint64_t ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2019, 13:50 |
|
Сравнение 2х картинок
|
|||
---|---|---|---|
#18+
Ого, тема получила продолжение, не ожидал. Я взял для себя расчет мд5 и сравнение размера файла. Для меня не важно детальное сравнение файлов, важно знать, были ли изменения Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2019, 17:52 |
|
Сравнение 2х картинок
|
|||
---|---|---|---|
#18+
Супер_Пав, Для меня не важно детальное сравнение файлов, важно знать, были ли изменения ----- Открой для себя: https://docs.microsoft.com/en-us/dotnet/api/system.io.filesystemwatcher?view=netframework-4.7.2 будешь получать нотификацию изменений по настроенным фильтрам. По крайней мере не нужно будет сканить все каждые 10 минут. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2019, 18:27 |
|
Сравнение 2х картинок
|
|||
---|---|---|---|
#18+
PinkCat, у меня файлы в сети. FileWatcher я пробовал в 1ю очередь, были какие-то проблемы, точно уже не помню ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2019, 18:55 |
|
|
start [/forum/topic.php?fid=20&fpage=23&tid=1399055]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 185ms |
0 / 0 |