При перечислении метаданных WIC потерялись некоторые блоки/элементы.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 При перечислении метаданных WIC потерялись некоторые блоки/элементы.

Сообщение Anonymous »

Я использую следующий код для выгрузки дерева метаданных (уровень фрейма, не уровень контейнера). При запуске для файлов PNG теряется много блоков/элементов. Что-то не так? Мой пример кода выводит только тип значения каждого метаэлемента, чтобы было понятно.
main.cc
#include

#include
#include

void PrintMetadata(IWICMetadataQueryReader* query_reader, int32_t indentation) {
IEnumString* enumerator{};
if (FAILED(query_reader->GetEnumerator(&enumerator))) {
return;
}

while (true) {
LPOLESTR name{};
ULONG fetched{};
if (enumerator->Next(1, &name, &fetched) == S_OK) {
PROPVARIANT var;
::PropVariantInit(&var);
if (query_reader->GetMetadataByName(name, &var) == S_OK) {
std::wcout GetFrame(0, &frame);
if (FAILED(result)) {
decoder->Release();
factory->Release();
return;
}

IWICMetadataQueryReader* query_reader{};
result = frame->GetMetadataQueryReader(&query_reader);
if (FAILED(result)) {
frame->Release();
decoder->Release();
factory->Release();
return;
}

PrintMetadata(query_reader, 0);
query_reader->Release();

frame->Release();
decoder->Release();
factory->Release();
}

int wmain(int /*argc*/, wchar_t** argv) {
::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);

DumpMetadatas(argv[1]);

::CoUninitialize();

return 0;
}


Вывод моего кода:
/sRGB
/RenderingIntent type: 17
/gAMA
/ImageGamma type: 19

ОС и сторонние инструменты могут отображать много информации из метаданных одних и тех же файлов PNG:
Вывод ExifTool:< /p>
ExifTool Version Number : 12.98
File Name : red.png
Directory : C:/images
File Size : 1147 bytes
File Modification Date/Time : 2024:10:08 15:06:37+08:00
File Access Date/Time : 2024:10:10 16:05:36+08:00
File Creation Date/Time : 2024:10:08 15:06:37+08:00
File Permissions : -rw-rw-rw-
File Type : PNG
File Type Extension : png
MIME Type : image/png
Image Width : 400
Image Height : 300
Bit Depth : 8
Color Type : RGB with Alpha
Compression : Deflate/Inflate
Filter : Adaptive
Interlace : Noninterlaced
SRGB Rendering : Perceptual
Gamma : 2.2
Pixels Per Unit X : 4724
Pixels Per Unit Y : 4724
Pixel Units : meters
Image Size : 400x300
Megapixels : 0.120


Подробнее здесь: https://stackoverflow.com/questions/790 ... ocks-items
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»