PowerToys icon indicating copy to clipboard operation
PowerToys copied to clipboard

Add HEIF/AVIF EXIF metadata extraction and UI support

Open moooyo opened this issue 1 month ago • 3 comments

  • Support EXIF extraction from HEIF/HEIC and AVIF images by detecting container format and using correct WIC metadata paths.
  • Extend supported file extensions to include .heic, .heif, and .avif.
  • Add unit tests and test data for HEIF/AVIF extraction, with graceful handling if required Windows Store extensions are missing.
  • Update PowerRename settings UI to show HEIF/AVIF extension status and provide install buttons.
  • Extend ViewModel to detect/install required extensions and expose status for binding.

Summary of the Pull Request

PR Checklist

  • [x] Closes: #43758
  • [ ] Communication: I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected
  • [ ] Tests: Added/updated and all pass
  • [ ] Localization: All end-user-facing strings can be localized
  • [ ] Dev docs: Added/updated
  • [ ] New binaries: Added on the required places
  • [ ] Documentation updated: If checked, please file a pull request on our docs repo and link it here: #xxx

Detailed Description of the Pull Request / Additional comments

Validation Steps Performed

moooyo avatar Dec 30 '25 06:12 moooyo

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (4)

CGPWG MVZQVXJBQ pdp PMMSR

Some files were automatically ignored :see_no_evil:

These sample patterns would exclude them:

^src/modules/powerrename/unittests/testdata/avif_test\.avif$
^src/modules/powerrename/unittests/testdata/heif_test\.heic$

You should consider adding them to:

.github/actions/spell-check/excludes.txt

File matching is via Perl regular expressions.

To check these files, more of their words need to be in the dictionary than not. You can use patterns.txt to exclude portions, add items to the dictionary (e.g. by adding them to allow.txt), or fix typos.

To accept these unrecognized words as correct and update file exclusions, you could run the following commands

... in a clone of the [email protected]:microsoft/PowerToys.git repository on the yuleng/rename/ext branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/20590673431/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Warnings :warning: (1)

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:warning: Warnings Count
:warning: large-file 2

See :warning: Event descriptions for more information.

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Dec 30 '25 06:12 github-actions[bot]

@moooyo I've opened a new pull request, #44570, to work on those changes. Once the pull request is ready, I'll request review from you.

Copilot avatar Jan 07 '26 01:01 Copilot

@moooyo I've opened a new pull request, #44571, to work on those changes. Once the pull request is ready, I'll request review from you.

Copilot avatar Jan 07 '26 01:01 Copilot