Что лучший способ состоит в том, чтобы получить хеш QPixmap?

Идентификатор последней вставки таблицы бомб.

$n_bom_d = $bom->id;
5
задан schnaader 5 March 2009 в 10:32
поделиться

3 ответа

Несколько комментариев к этому:

  1. Если Вы собираетесь быть генерацией ключа хеша/кэша пиксельной карты, то можно хотеть пропустить QPixmapCache и использовать QCache непосредственно. Это устранило бы немного служебные из использования QStrings как ключи (если Вы также не хотите использовать путь к файлу для определения местоположения объектов),

  2. С Qt4.4 QPixmap имеет значение "хеша", связанное с ним (см. QPixmap:: cacheKey ()). Требования документации "Отличные объекты QPixmap могут только иметь тот же ключ кэша, если они обращаются к тому же содержанию". Однако начиная со спокойного копирования совместно используемых данных использования, это может только относиться к скопированным пиксельным картам а не к двум отличным пиксельным картам, загруженным из того же изображения. Немного тестирования сказало бы Вам, если оно работает, и если бы оно делает, оно позволило бы Вам легко получить значение хэш-функции.

  3. Если Вы действительно хотите сделать хороший, довольно быстрый кэш с удалением дублирований, Вы могли бы хотеть посмотреть на свою собственную структуру данных что виды согласно размерам, глубине цвета, типам изображения и вещам, таким как это. Затем необходимо было бы только хешировать данные действительного образа после нахождения того же типа изображения с теми же размерами, битовыми глубинами, и т.д. Конечно, если бы Ваши пользователи обычно открывают много изображений с теми вещами то же, оно не помогло бы вообще.

  4. Производительность: не забывайте о QT материала сравнительного тестирования, добавил в 4,5, который позволит Вам сравнить свои различные идеи хеширования и видеть, какой выполняет самое быстрое. Я еще не проверил его, но это выглядит крутым.

3
ответ дан 14 December 2019 в 04:48
поделиться

Вычисления хеша должны быть довольно быстрыми (где-нибудь выше 100 МБ/с, если никакой диск, который включил ввод-вывод), в зависимости от которого алгоритма Вы используете. Перед хешированием Вы могли также сделать, некоторые быстрые тесты для разбираний в потенциальных кандидатах - f.e. изображения должны иметь ту же ширину и высоту, еще бесполезно сравнить их значения хэш-функции.

Конечно, необходимо также сохранить значения хэш-функции для вставленных изображений, таким образом, Вы только должны вычислить хеш для новых изображений и не должны будете вычислять его снова для кэшируемых изображений.

Если бы изображения достаточно отличаются, возможно, было бы достаточно не хешировать целое изображение, но меньшую миниатюру или часть изображения (f.e. в общем и целом 10 строк), это будет быстрее, но приведет к большему количеству коллизий.

1
ответ дан 14 December 2019 в 04:48
поделиться

Я предполагаю, что Вы говорите о фактическом вычислении хеша по данным изображения вместо того, чтобы получить уникальный идентификатор, сгенерированный QT.
В зависимости от Ваших изображений Вы, вероятно, не должны пробегаться через целое изображение для вычисления хеша. Возможно, только считайте первые 10 пикселей? первая строка развертки?
Возможно, псевдослучайный выбор пикселей из всего изображения? (с известным семенем так, чтобы Вы могли повторить последовательность) не забывают добавлять размер изображения к хешу также.

1
ответ дан 14 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: