QImage
呼び出された 内のすべてのピクセルにアクセスするための 2 つの方法を認識しています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();
}
ループが 1 つしかないため、2 番目の方法を使用したいと思っていますがpixelCount
、「十分に大きな」画像を処理する場合に発生する可能性のあるオーバーフローについても懸念しています。
質問
に格納されているすべてのピクセルを反復する最もスケーラブルな方法は何QImage
ですか? スケーラブルとは、画像のサイズ (幅と高さ) に関係なく機能することを意味します。
注:メモリ使用量に関して「物理的な」制限があることはすでに認識しています。両方の方法がそのような限界に達することができるかどうかを知りたいだけです。