问:迭代QImage的最具扩展性的方法是什么?

时间:2016-01-28 01:47:02

标签: c++ qt qimage pixel-manipulation

我知道有两种方法可以访问名为QImage的{​​{1}}中的所有像素。

方法1

img

方法2

for (int y = 0; y < img.height(); y++) {
    QRgb *line = (QRgb *) img.scanline(y);
    for (int x = 0; x < img.width(); x++) {
        // line[x] has an individual pixel
        line[x] = QColor(255, 128, 0).rgb();
    }
}

我热衷于使用第二种方法,因为它只涉及一个循环,但如果处理“足够大”的图像,我也担心QRgb *st = (QRgb *) img.bits(); quint64 pixelCount = img.width() * img.height(); for (quint64 p = 0; p < pixelCount; p++) { // st[p] has an individual pixel st[p] = QColor(255, 128, 0).rgb(); } 上可能出现任何溢出。

问题

迭代pixelCount中存储的所有像素的最具扩展性的方法是什么?通过可扩展我的意思是无论图像尺寸(宽度和高度)是什么,它仍然可以工作。

注意:我已经知道内存使用方面存在“物理”限制。我只是想知道这两种方法是否都能达到这样的限制。

0 个答案:

没有答案