Commit 2bd7e154223ba7e37a4d55da18d11bca5a3e6874
1 parent
2f89b3f6
Only write files to sigsets that are non-null
Showing
1 changed file
with
24 additions
and
18 deletions
openbr/core/bee.cpp
| ... | ... | @@ -71,7 +71,11 @@ FileList BEE::readSigset(const File &sigset, bool ignoreMetadata) |
| 71 | 71 | for (int i=0; i<attributes.length(); i++) { |
| 72 | 72 | const QString key = attributes.item(i).nodeName(); |
| 73 | 73 | const QString value = attributes.item(i).nodeValue(); |
| 74 | - if (key == "file-name") file.name = value; | |
| 74 | + if (key == "url") file.name = value.split('/').last(); | |
| 75 | + else if (key == "Rect") { | |
| 76 | + QStringList points = value.split(','); | |
| 77 | + file.appendRect(QRect(points.at(0).toInt(),points.at(1).toInt(),points.at(2).toInt()-points.at(0).toInt(),value.split(',').at(3).toInt()-points.at(1).toInt())); | |
| 78 | + } | |
| 75 | 79 | else if (!ignoreMetadata) file.set(key, value); |
| 76 | 80 | } |
| 77 | 81 | |
| ... | ... | @@ -111,25 +115,27 @@ void BEE::writeSigset(const QString &sigset, const br::FileList &files, bool ign |
| 111 | 115 | lines.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); |
| 112 | 116 | lines.append("<biometric-signature-set>"); |
| 113 | 117 | foreach (const File &file, files) { |
| 114 | - QStringList metadata; | |
| 115 | - if (!ignoreMetadata) { | |
| 116 | - foreach (const QString &key, file.localKeys()) { | |
| 117 | - if ((key == "Index") || (key == "Label") || (key == "Points") || (key == "Rects")) continue; | |
| 118 | - metadata.append(key+"=\""+QtUtils::toString(file.value(key))+"\""); | |
| 119 | - } | |
| 120 | - QStringList landmarks; | |
| 121 | - if (!file.points().isEmpty()) { | |
| 122 | - foreach (const QPointF &point, file.points()) landmarks.append(QtUtils::toString(point)); | |
| 123 | - metadata.append("Points=\"["+landmarks.join(",")+"]\""); landmarks.clear(); | |
| 124 | - } | |
| 125 | - if (!file.rects().isEmpty()) { | |
| 126 | - foreach (const QRectF &rect, file.rects()) landmarks.append(QtUtils::toString(rect)); | |
| 127 | - metadata.append("Rects=\"["+landmarks.join(",")+"]\""); | |
| 118 | + if (!file.isNull()) { | |
| 119 | + QStringList metadata; | |
| 120 | + if (!ignoreMetadata) { | |
| 121 | + foreach (const QString &key, file.localKeys()) { | |
| 122 | + if ((key == "Index") || (key == "Label") || (key == "Points") || (key == "Rects")) continue; | |
| 123 | + metadata.append(key+"=\""+QtUtils::toString(file.value(key))+"\""); | |
| 124 | + } | |
| 125 | + QStringList landmarks; | |
| 126 | + if (!file.points().isEmpty()) { | |
| 127 | + foreach (const QPointF &point, file.points()) landmarks.append(QtUtils::toString(point)); | |
| 128 | + metadata.append("Points=\"["+landmarks.join(",")+"]\""); landmarks.clear(); | |
| 129 | + } | |
| 130 | + if (!file.rects().isEmpty()) { | |
| 131 | + foreach (const QRectF &rect, file.rects()) landmarks.append(QtUtils::toString(rect)); | |
| 132 | + metadata.append("Rects=\"["+landmarks.join(",")+"]\""); | |
| 133 | + } | |
| 128 | 134 | } |
| 135 | + lines.append("\t<biometric-signature name=\"" + file.get<QString>("Label",file.baseName()) +"\">"); | |
| 136 | + lines.append("\t\t<presentation file-name=\"" + file.name + "\" " + metadata.join(" ") + "/>"); | |
| 137 | + lines.append("\t</biometric-signature>"); | |
| 129 | 138 | } |
| 130 | - lines.append("\t<biometric-signature name=\"" + file.get<QString>("Label",file.baseName()) +"\">"); | |
| 131 | - lines.append("\t\t<presentation file-name=\"" + file.name + "\" " + metadata.join(" ") + "/>"); | |
| 132 | - lines.append("\t</biometric-signature>"); | |
| 133 | 139 | } |
| 134 | 140 | lines.append("</biometric-signature-set>"); |
| 135 | 141 | QtUtils::writeFile(sigset, lines); | ... | ... |