获取 QPixmap 的哈希值的最佳方法是什么?

2024-01-26

我正在使用 Qt 4.5 开发一个图形应用程序,并将图像放入 QPixmapCache 中,我想对此进行优化,以便如果用户插入已经在缓存中的图像,它将使用该图像。

现在,每个图像都有一个唯一的 ID,有助于在绘制事件时优化自身。但是我意识到,如果我可以计算图像的哈希值,我可以查找缓存以查看它是否已经存在并使用它(当然,这对于重复的对象会有更多帮助)。

我的问题是,如果它是一个大的 QPixmap,它的哈希计算会减慢速度还是有更快的方法?


对此有几点评论:

  1. 如果您要生成像素图的哈希/缓存键,那么您可能需要跳过 QPixmapCache 并直接使用QCache。这将消除使用 QStrings 作为键的一些开销(除非您还想使用文件路径来定位项目)

  2. 从 Qt4.4 开始,QPixmap 有一个与之关联的“哈希”值(请参阅QPixmap::cacheKey())。该文档声称“不同的 QPixmap 对象只有引用相同的内容才能具有相同的缓存键。”然而,由于 Qt 使用共享数据复制,这可能仅适用于复制的像素图,而不适用于从同一图像加载的两个不同的像素图。一些测试会告诉你它是否有效,如果有效,它会让你轻松获得哈希值。

  3. 如果你真的想做一个好的、相当快的缓存并删除重复项,你可能想看看你自己的数据结构根据大小、颜色深度、图像类型等进行排序。然后,在找到具有相同尺寸、位深度等的相同类型的图像后,您只需要对实际图像数据进行哈希处理。当然,如果您的用户通常打开大量具有相同内容的图像,则不会根本没有帮助。

  4. 性能:不要忘记 Qt 在 4.5 中添加的基准测试工具,它可以让您比较各种哈希想法并查看哪一种运行速度最快。我还没有检查过,但看起来很整洁。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 QPixmap 的哈希值的最佳方法是什么? 的相关文章

  • 双线性序列给出奇数结果

    我试图让我的表现技能 不存在 达到标准 但在将公式写入代码时遇到了问题 这是我试图将其引用为 转换 为代码的公式 考虑一个序列 u 其中 u 定义如下 号码u 0 1是第一个u 对于每个x in u then y 2 x 1 and z 3
  • 如何使用 ILoggerFactory 记录 Polly 的重试

    或者 如何从静态方法记录 From https github com App vNext Polly https github com App vNext Polly你有这样的例子 其中记录器神奇地可用 Policy Timeout 30
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • 在调用堆栈中看到大量 clr!CLR Semaphore::Wait

    我们看到很多像下面这样的调用堆栈 我可以知道什么条件 情况会发生这种情况吗 OS Thread Id 0x48654 559 Current frame ntdll NtWaitForSingleObject 0xa Child SP Re
  • 每次调用新方法时触发事件

    我正在做一个logger for a c 应用程序需要记录每个方法被调用的时间以及每个方法执行时间 我可以通过调用自己的方法来做到这一点EventLogger LogMethodCall方法在每个方法的开头 但我想知道是否有办法使CLR每次
  • 使用预编译头减少 clang 编译时间

    我正在开发一个数据库项目 该项目将查询 以某种高级语言表示 编译为 C 代码 这段代码由数据库编译并执行 那部分工作得很好 现在 我正在尝试减少 C 查询代码的编译时间 我想知道是否可以使用预编译头来提高性能 该查询被转换为一个名为 Que
  • StreamReader,C#,peek

    我有一个 StreamReader 它偶尔会检查它是否有更多内容可以从简单的文本文件中读取 它使用 peek 属性 问题是 当我使用 peek 时 位置发生了变化 尽管不应该发生 FileStream m fsReader new File
  • 无法运行 Qt 应用程序:找不到版本“Qt_5”

    我运行 Ubuntu 16 04 LTS 我的问题是我无法运行可以编译的 Qt5 应用程序 这是我尝试运行它时得到的结果 home user Desktop sconfig dist Release GNU Linux SCongif us
  • 求一个数的因数。无法得到准确的结果

    有人可以帮助纠正我的算法吗 我已经对几个数字进行了测试 但它没有输出完整的因式分解 对于具有大量因子的数字 它完全失败 int num 20 for int i 2 i lt num i if num i 0 cout lt lt i lt
  • 在 C++ 中使用表达式模板进行符号微分

    如何在 C 中使用表达式模板实现符号微分 一般来说 您需要一种表示符号的方法 即编码的表达式模板 例如3 x x 42 以及一个可以计算导数的元函数 希望您对 C 中的元编程足够熟悉 知道这意味着什么和需要什么 但可以给您一个想法 This
  • 读取STM32 MCU SPI数据寄存器的值

    有很多类似的问题 但似乎没有一个问题完全相同 我正在将 STML4 MCU 连接到 6 轴传感器 LSM6DS3 我已经成功地在 I2C 中实现了所有内容 但想要 SPI 的额外速度 和 DMA 如果我能让这些第一步工作起来的话 因此 第一
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • 只读有运行时开销吗?

    出于某种原因 我一直认为readonly字段有与其相关的开销 我认为这是 CLR 跟踪是否存在readonly字段是否已初始化 这里的开销是一些额外的内存使用量 用于跟踪状态以及分配值时的检查 也许我这么认为是因为我不知道readonly字
  • 带有自定义鉴别器的 EntityFramework Code First 继承

    我正在尝试在 EntityFramework Code First 中映射以下继承 public class Member public string ProjectName get set public string AssemblyNa
  • TreeView:仅在子节点中存在复选框

    我需要一个树视图控件 根节点没有复选框 只有图像 所有子节点都有一个复选框 图像 C net 2 0 winforms 不是 wpf WinForms树视图默认不支持混合复选框 非复选框节点 您可以在树视图上全局启用复选框 并使用以下命令在
  • 为什么我不能对普通变量进行多态?

    我是一名Java程序员 最近开始学习C 我对某事感到困惑 据我了解 在 C 中 要实现多态行为 您必须使用指针或引用 例如 考虑一个类Shape与实施的方法getArea 它有几个子类 每个子类都以不同的方式重写 getArea 然后考虑以
  • 字符串 c 的二叉树

    我正在尝试实现一个能够在 c 中保存字符串的二叉树 在让代码适用于整数之后 我尝试稍微修改它以处理字符数组 现在我似乎完全破解了代码 但不知道如何破解 任何帮助表示赞赏 include
  • OpenGL 计算着色器调用

    我有一个与新计算着色器相关的问题 我目前正在研究粒子系统 我将所有粒子存储在着色器存储缓冲区中 以便在计算着色器中访问它们 然后我派遣一个一维工作组 define WORK GROUP SIZE 128 shaderManager gt u
  • 如何在 Winform DataGridView 中创建不同的单元格格式

    我有一个 DataGridView 我将其绑定到 DataTable DataTable 是一个全数字值 要求 DataGridView 中的每 n 行都包含文本 而不是数值 以便在视觉上为用户分隔部分 我很高兴在绑定后将此文本数据放入 D
  • 如何在用户空间程序中使用内核 libcrc32c (或相同的函数)?

    我想在我自己的用户空间程序中进行一些 CRC 检查 我发现内核加密库已经在系统中 并且支持 SSE4 2 我尝试直接 include

随机推荐

  • 用字典解析字符串的算法

    Given 一本充满单词的字典 in july den dentist best 使用一些 C API 来访问它 boolean findWord string word or string getNextWord void 迭代它 一些没
  • 解码 websocket 框架

    我正在尝试解码 websocket 帧 但在解码扩展有效负载时没有成功 到目前为止我所取得的成就是 char in data char buffer unsigned int i unsigned char mask 4 unsigned
  • 就地对 Perl 数组进行排序

    我有一个对数组的引用 称为 intervals 我想对这个数组中的值进行排序 数组中可能有大量值 所以我不想复制这些值 我目前的做法是这样的 sub by position a gt start lt gt b gt start a gt
  • React Hooks:如何在渲染之前等待数据被获取

    我在 useEffect 挂钩中有 fetch 方法 export const CardDetails gt const card getCardDetails useState const id useParams useEffect g
  • ResponseEntityExceptionHandler 针对 401 异常返回空响应正文

    我正在尝试使用 RestTemplate 实现对身份验证服务器的 Rest 调用 并记录响应 以防服务器返回异常 为了做到这一点 我使用 ResponseEntityExceptionHandler 来处理 HttpClientErrorE
  • R 中的掩码电话号码

    我的原始数据有很多个人信息 所以我在R中屏蔽它们 示例数据和我的原始代码如下 install packages stringr library string x c 010 1234 5678 John 010 8888 8888 Phon
  • Node JS:异步执行命令行并获取输出

    我如何运行命令行并尽快获取输出以将其显示在某处 例如 如果在 Linux 系统上运行 ping 命令 它永远不会停止 现在是否可以在命令仍在处理时获得响应 或者让我们采取apt get install命令 如果我想在安装运行时显示安装进度怎
  • If 语句内部和外部的 Return

    这可能是一个相当容易回答的问题 但它已经困扰我一段时间了 如果 if 语句内有一个 return 语句 在一个方法内 在 Java 语言中 但我在末尾添加另一个作为包罗万象并避免错误 则两个返回值都将在其他 if if 语句为真 一个例子
  • 我如何在Python中只向下舍入数字/浮点数?

    我将生成这个随机数 例如 12 75 或 1 999999999 或 2 65 我希望始终将此数字向下舍入为最接近的整数 因此 2 65 将四舍五入为 2 抱歉 我问了很多遍 但没有找到答案 谢谢 您可以选择我们int math trunc
  • org.bson.BSONObject 中的 java 类型

    我目前正在学习mongodb 的 BSON java 库 http github com mongodb mongo java driver 我正在尝试改变org bson BSONObject到 XML 中 以便将其转换为XSLT样式表
  • 在solr中搜索特殊字符

    我在 solr 中搜索特殊字符时遇到问题 我的文档有一个 标题 字段 有时它可能像 泰坦尼克号 1999 它有字符 当我尝试使用 在 solr 中搜索时 我收到 400 错误 我试图转义这个字符 所以我尝试了 和 之类的东西 经过这些更改
  • C# 中使用掩码进行位操作

    我需要一些有关 C 中位图操作的帮助 我想要一个UInt16 隔离任意数量的位 并使用另一个位设置它们UInt16 value Example 10101010 Original Value 00001100 Mask Isolates b
  • Android将图片旋转90度(相机拍摄)[重复]

    这个问题在这里已经有答案了 我正在通过代码在我的 Samsung Galaxy SII 设备中拍照 保存并在屏幕上显示它后 我看到它旋转了 90 度 我知道这是一些设备问题 并非所有设备上都会发生这种情况 我正在使用给定的相机意图拍照并将其
  • Apollo 客户端什么是主动查询?

    My Setup Typescript 反应应用程序 后端 GraphQL API 阿波罗客户端 使用 Apollo 客户端 Devtools 扩展进行检查 我的问题 什么是主动查询 Apollo 文档谈论了很多主动查询 但我很难得到一个实
  • 如果填充了另一个字段,则 MVC 3 字段为必填字段

    我有一个简单的问题 例如 我有两个字段映射在模型 ex 上 textbox 1 和 textbox 2 我想问是否存在一种方法 前强制装饰器 仅当我填充 textbox 1 时才强制执行 textbox 2 如果我不填写textbox 1
  • iPhone 在 CoreData 保存时崩溃

    这是一个不同的情况这个问题 https stackoverflow com questions 1230858 iphone core data crashing on save 因为提供的解决方案不起作用并且堆栈不同 当我使用 cored
  • 从 HttpResponseMessage 获取 Excel 文件

    我正在开发一个 ASP NET Core 2 2 项目 我需要使用浏览器下载 Excel 但是当我执行请求时 我只得到一些 Json 我的 Excel 在流中 并且流不为空 这是我的代码 HttpResponseMessage messag
  • 为什么 requestWhenInUseAuthorization 不提示用户访问该位置?

    In my viewDidLoad我有的方法 locationManager CLLocationManager alloc init initializing locationManager locationManager delegat
  • 是否有 DCC32 选项将特定编译器警告视为错误?

    对于命令行构建 我想将警告 例如 构造包含抽象方法的实例 视为错误 我在 Delphi 2009 中没有找到用于此目的的 dcc32 命令行选项 有没有办法 例如使用 dcc32 cfg 来执行此操作 像这样 dcc32 W CONSTRU
  • 获取 QPixmap 的哈希值的最佳方法是什么?

    我正在使用 Qt 4 5 开发一个图形应用程序 并将图像放入 QPixmapCache 中 我想对此进行优化 以便如果用户插入已经在缓存中的图像 它将使用该图像 现在 每个图像都有一个唯一的 ID 有助于在绘制事件时优化自身 但是我意识到