1

我在使用 Exiftool 10.10+、Qt 5.5.1 和 Windows 10 时遇到了一些有趣的问题。

我正在使用 QTemporaryFile 创建临时文件,在那里写入一些数据,保存它,等到它被刷新使用FlushFileBuffers(),然后将此文件作为exiftool. 我在那里写的数据是图像的 UTF-8 编码路径:

QTemporaryFile argumentsFile;

if (argumentsFile.open()) {
    QStringList exiftoolArguments = createArgumentsList();
    foreach (const QString &line, exiftoolArguments) {
        argumentsFile.write(line.toUtf8());
        argumentsFile.write("\r\n");
    }
}

argumentsFile.flush()

// fsync stuff here...

argumentsFile.close()

// starting exiftool with -@ argumentsFile.fileName() parameter here 
// also with -charset filename=UTF8

所以问题如下:当文件名不包含 Unicode 符号时,Exiftool 读取图像,导入 Exif 元数据,一切都很好。

但是当文件名包含 Unicode 符号时,有时 Exiftool 不会赶上它们,除非我将插入QThread::sleep(msec)调用,这将使当前线程切换上下文并可能提供为其他线程同步缓冲区(写入硬盘驱动器)的能力。

使用相同文件从 cmd 行运行的 Exiftool 始终读取元数据,除非以 QProcess 以前面解释的方式启动。可能是什么问题?

4

0 回答 0