我想使用Qt 4.8.1的Qftp
模块将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”字符填充,这与“ASCII”等效于“75”。似乎缺少标题,因此操作系统认为它只是一个简单的文本文件。我认为这是因为我只将 InputImage.data 复制到QByteArray变量中,所以没有有关该图像的信息。如何将“InputImage” header 信息复制到“byteMe”变量中,以便可以存储正常的JPEG文件?
最佳答案
尝试
QByteArray byteMe((char *) FTP_Result.bits(), FTP_Results.byteCount());
当您使用简单的
char *
进行构造时,它将查找以null终止的字符串。