經過親測, QT(版本: 5.9.4)提供的QImageReader或者函數load在加載本地png圖像時,均會提示失敗, 按照網上的方法,將Qt plugins下的imageformats
拷貝到exe路徑下,也不行。
如果是png圖像, 可以通過opencv進行加載,然后將Mat轉換為QImage。
但是有一個問題, 當路徑為中文路徑時, opencv無法加載,需要將中文進行轉碼:
(以下是我收錄的兩種實現opencv加載中文路徑的png圖像)
1.、
cv::Mat srcImg;
QFile file(“D:/測試.png");
if( file.open(QIODevice::ReadOnly))
{
QByteArray byteArr = file.readAll();
std::vector<char> data(byteArr.data(), byteArr.data() +byteArr.size());
srcImg = cv::imdecode(cv::Mat(data),1);
file.close();
}else
return;
2、
QString strPath = “D:/測試.png"; std::string path = strPath.toLocal8Bit().toStdString(); cv::Mat image = cv::imread(path,1 );
注: 當代碼中包含:
QTextCodec* codec =QTextCodec::codecForName("utf8");
QTextCodec::setCodecForLocale(codec);
如果將編碼方式設置為隨本地系統,那么這種轉碼可能不行.
