2017-07-17 70 views
0

我正在获取图像行数据并将其保存在unsigned char数组中。接下来我试图从这些数据中创建新的图像文件。将原始数据保存为新文件

如何获得数据:

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

其中x - >宽度图像,Y - >图像的高度。另外据我了解bits()返回指向第一个像素数据,所以与“我”和“j”我可以移动该指针。因为我有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"; 
    } 
} 

不幸的是,从不创建文件。我究竟做错了什么 ?

+0

您没有假设以图像原始数据保存到2维阵列。只需将其保存在普通数组中。然后使用其中一个[QImage构造函数](http://doc.qt.io/qt-5/qimage.html#QImage-6)传递数组(不是2维)。 –

回答