3

我想使用QftpQt 4.8.1 的模块将 opencv 图像发送到 FTP 服务器。我写了以下代码:

        ftp = new QFtp(this);
        //ftp initilization
          .
          .
          .
          . 
        //
        cv::Mat InputImage(100,100,CV_8UC1,cv::Scalar::all(75));
        QImage FTP_Result = QImage((const uchar *) InputImage.data, InputImage.cols, InputImage.rows, InputImage.step, QImage::Format_Indexed8);
        QByteArray byteMe((char *) FTP_Result.bits());

        qDebug()<<"Image size is: "<<FTP_Result.height()<<"*"<<FTP_Result.width(); //it returns 100*100
        ftp->put(byteMe,"Sample.jpg");

当我进入 ftp 服务器硬盘时,我找到Sample.jpg,它充满了“K”字符,这是“75”的 Asci 等价物。似乎缺少标题,因此操作系统认为它只是一个简单的文本文件。我认为这是因为我只将InputImage.data复制到 QByteArray 变量中,因此没有关于图像的信息。我应该怎么做才能将“InputImage”标头信息复制到“byteMe”变量中,这样我就可以存储一个健康的 JPEG 文件?

4

1 回答 1

1

尝试

QByteArray byteMe((char *) FTP_Result.bits(), FTP_Results.byteCount());

当您使用简单构造时,char *它会查找以空字符结尾的字符串。

于 2014-09-24T14:55:23.147 回答