读取二进制文件以写入图像

时间:2016-06-17 07:32:33

标签: binary

首先,非常感谢帮助我并提供帮助。

我在.bin(二进制文件)中写入一个图像矩阵。代码是:

QString outputFilename = QFileDialog::getSaveFileName(this, "BIN", "/home", "files BIN (*.bin)");

std::string output_file_name = outputFilename.toStdString();
output_file_name += ".bin";

std::ofstream myFile (output_file_name.c_str(), std::ios::out | std::ios::binary);

    for(int i=0;i<img.width();++i){
        for(int j=0;j<img.height();++j){
            myFile.write (reinterpret_cast<const char *> (&matrix[i][j]), sizeof(int));
        }
    }

 myFile.close();

现在我想读这个.bin来写一个矩阵,所以反转过程。 有什么想法吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

对于文件操作,确切的数据大小很重要,因此请考虑将matrix定义为固定宽度的整数:http://doc.qt.io/qt-4.8/datastreamformat.html。确切类型取决于图像数据(每像素位数)格式 - http://www.willamette.edu/~gorr/classes/GeneralGraphics/imageFormats/

要阅读,只需使用read功能:

std::ifstream myFile (input_file_name.c_str(), std::ios::out | std::ios::binary);

if(myFile)
{
    for(int i=0;i<img.width();++i){
        for(int j=0;j<img.height();++j){
            myFile.read ((char*) (&matrix[i][j]), sizeof(int));
        }
    }
}