我知道有两种方法可以访问QImage
被调用的img
.
方法一
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
处理“足够大”的图像时任何可能的溢出。
问题
迭代存储在 a 中的所有像素的最具可扩展性的方法是QImage
什么?通过可扩展性,我的意思是无论图像尺寸(宽度和高度)如何,它仍然可以工作。
注意:我已经知道在内存使用方面存在“物理”限制。我只想知道这两种方法是否能够达到这样的极限。