将原始数据保存为新文件

时间:2017-07-17 07:51:54

标签: c++ qt

我正在获取图像行数据并将其保存在unsigned char数组中。接下来,我尝试从该数据创建新的图像文件。

如何获取数据:

for(int i = 0; i < x; i++) {
        for(int j = 0; j < y; j++) {
            byteArray[i][j] = *((image.bits() + i) + j);
        }
    }

其中x - &gt;图像宽度,y - &gt;图像的高度。另外据我所知,bits()返回指向第一个像素数据的指针,因此使用&#34; i&#34;和&#34; j&#34;我可以移动那个指针。有了这个,我有255,255,120等等的数组(r,g,b,像素值)。

我如何创建新图片:

void saveFile(unsigned char **array, const int &x, const int &y) {
    QImage newImage(x, y, QImage::Format_ARGB32);
    newImage.loadFromData((const unsigned char*)array, x * y, "JPG");
    bool success = newImage.save("przerobione", "JPG", -1);

    if(success == true) {
        qDebug() << "Zapisano!";
    }
    else {
        qDebug() << "nope";
    }
}

不幸的是它永远不会创建文件。我究竟做错了什么 ?

1 个答案:

答案 0 :(得分:0)