Я знаю два метода, чтобы получить доступ ко всем пикселям в QImage
называется img
,
Способ 1
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();
}
}
Способ 2
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
если обрабатывает «достаточно большое» изображение.
Вопрос
Каков самый масштабируемый способ перебора всех пикселей, хранящихся в QImage
? От масштабируемый Я имею в виду, что он все равно будет работать независимо от размеров изображения (ширина и высота).
НОТА: Я уже знаю, что существуют «физические» ограничения с точки зрения использования памяти. Я просто хочу знать, способны ли оба метода достичь такого предела.
Задача ещё не решена.
Других решений пока нет …