title: Qt: What is the most scalable way to iterate over a QImage?
body: <p>I'm aware of two methods in order to access to all the pixels in a <code>QImage</code> called <code>img</code>.</p>
  
  <p><strong>Method 1</strong></p>
  
  <pre><code>for (int y = 0; y &lt; img.height(); y++) {
      QRgb *line = (QRgb *) img.scanline(y);
      for (int x = 0; x &lt; img.width(); x++) {
          // line[x] has an individual pixel
          line[x] = QColor(255, 128, 0).rgb();
      }
  }
  </code></pre>
  
  <p><strong>Method 2</strong></p>
  
  <pre><code>QRgb *st = (QRgb *) img.bits();
  quint64 pixelCount = img.width() * img.height();
  
  for (quint64 p = 0; p &lt; pixelCount; p++) {
      // st[p] has an individual pixel
      st[p] = QColor(255, 128, 0).rgb();
  }
  </code></pre>
  
  <p>I'm keen on using the second method as it only involves one loop, but am also concerned about any possible overflows on <code>pixelCount</code> if processing a "big enough" image.</p>
  
  <p><strong>Question</strong></p>
  
  <p>What is the most scalable way to iterate over all pixels stored in a <code>QImage</code>? By <em>scalable</em> I mean that it will still work no matter what the image dimensions (width and height) are.</p>
  
  <p><strong>NOTE:</strong> I'm already aware there are "physical" limits in terms of memory usage. I just want to know whether both methods are capable of reaching such a limit.</p>