Я использую следующий код для выгрузки дерева метаданных (уровень фрейма, не уровень контейнера). При запуске для файлов 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
При перечислении метаданных WIC потерялись некоторые блоки/элементы. ⇐ C++
Программы на C++. Форум разработчиков
1728885746
Anonymous
Я использую следующий код для выгрузки дерева метаданных ([b]уровень фрейма[/b], [b]не[/b] уровень контейнера). При запуске для файлов PNG теряется много блоков/элементов. Что-то не так? Мой пример кода выводит только тип значения каждого метаэлемента, чтобы было понятно.
[b]main.cc[/b]
#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;
}
[b]Вывод моего кода:[/b]
/sRGB
/RenderingIntent type: 17
/gAMA
/ImageGamma type: 19
ОС и сторонние инструменты могут отображать много информации из метаданных одних и тех же файлов PNG:
[b]Вывод ExifTool:[/b]< /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
Подробнее здесь: [url]https://stackoverflow.com/questions/79077055/wic-metadata-enumeration-lost-some-blocks-items[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия