HEIC (High-Efficiency Image Container) is een container die High-Efficiency Image Format HEIF-afbeeldingen kan bevatten. XMP is een op XML gebaseerde metadatastandaard, die metadata-eigenschappen kan opslaan als naam/waarde-paren. EXIF (Exchangeable Image File Format) is echter de standaard en definieert hoe metadata-eigenschappen moeten worden opgeslagen in de meest voorkomende afbeeldingen en audioformaten. In dit artikel leren we hoe u de XMP- en EXIP-metadata van de HEIF/HEIC-afbeeldingen kunt extraheren, bijwerken en verwijderen met behulp van C# binnen .NET-toepassingen.
De volgende onderwerpen komen hieronder aan bod:
- .NET API voor EXIF, XMP-metagegevens
- Lees EXIF-gegevens van HEIC/HEIF-afbeeldingen
- Lees XMP-gegevens van HEIC/HEIF-afbeeldingen
.NET API voor XMP- en EXIF-metagegevens
GroupDocs.Metadata biedt .NET API om metadatabeheer binnen .NET-applicaties te automatiseren. De API maakt het mogelijk om de metadata voor veel bestandsindelingen te lezen, bij te werken, toe te voegen, op te schonen/verwijderen en te doorlopen. Verschillende metadatastandaarden zoals EXIF, IPTC en XMP worden ondersteund door de API. U kunt ook de documentatie bezoeken voor de volledige lijst van ondersteunde bestandsindelingen voor metadatamanipulatie.
U kunt de DLL’s of het MSI-installatieprogramma downloaden van de downloadsectie of de API in uw .NET-toepassing installeren via NuGet.
PM> Install-Package GroupDocs.Metadata
Lees EXIF-gegevens van HEIC / HEIF-afbeeldingen in C#
Hieronder volgen de stappen om EXIF-gegevens van HEIC- en HEIF-afbeeldingen te lezen en te extraheren.
- Laad de HEIF- of HEIC-afbeelding met behulp van de Metadata-klasse.
- Download het rootpakket.
- Haal het EXIF-pakket op uit het rootpakket.
- Doorloop de EXIF-gegevenseigenschappen.
- Bovendien kunt u de IFD (Image File Directory) en GPS-informatie uit het EXIF-pakket halen.
De volgende code laat zien hoe u EXIF-gegevens, IFD- en GPS-metagegevensinformatie van de HEIC-afbeelding kunt verkrijgen met behulp van C#.
// Lees EXIF, EXIF IFD, EXIF GPS-pakket van HEIF / HEIC-afbeeldingen in C#
using (Metadata metadata = new Metadata(@"image.heic"))
{
IExif root = metadata.GetRootPackage() as IExif;
if (root != null && root.ExifPackage != null)
{
const string pattern = "{0} = {1}";
foreach (TiffTag tag in root.ExifPackage.ToList())
{
Console.WriteLine(pattern, tag.TagID, tag.Value);
}
foreach (TiffTag tag in root.ExifPackage.ExifIfdPackage.ToList())
{
Console.WriteLine(pattern, tag.TagID, tag.Value);
}
foreach (TiffTag tag in root.ExifPackage.GpsPackage.ToList())
{
Console.WriteLine(pattern, tag.TagID, tag.Value);
}
}
}
Lees XMP-gegevens van HEIC / HEIF-afbeeldingen in C#
De volgende stappen lezen XMP-metadata van HEIC- of HEIF-afbeeldingen.
- Laad de HEIF- of HEIC-afbeelding met behulp van de Metadata-klasse.
- Haal het rootpakket op met behulp van de methode getRootPackage.
- Vanuit het rootpakket kunt u de XMP-basisinformatie ophalen.
- Verder kunt u de DCMI Dublin Core-informatie krijgen.
- Bovendien kunt u Photoshop-informatie verkrijgen met behulp van de getPhotoshop-methode.
De volgende broncode laat zien hoe u XMP-basis-, DCMI- en Photoshop-informatie kunt verkrijgen in C#.
// Extraheer XMP Basic-, DublinCore- en Photoshop-gegevens van HEIC- en HEIF-afbeeldingen in C#
using (Metadata metadata = new Metadata(@"xmp.heic"))
{
IXmp root = metadata.GetRootPackage() as IXmp;
if (root != null && root.XmpPackage != null)
{
if (root.XmpPackage.Schemes.XmpBasic != null)
{
Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.CreatorTool);
Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.CreateDate);
Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.ModifyDate);
Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.Label);
Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.Nickname);
// ...
}
if (root.XmpPackage.Schemes.DublinCore != null)
{
Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Format);
Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Coverage);
Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Identifier);
Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Source);
// ...
}
if (root.XmpPackage.Schemes.Photoshop != null)
{
Console.WriteLine(root.XmpPackage.Schemes.Photoshop.ColorMode);
Console.WriteLine(root.XmpPackage.Schemes.Photoshop.IccProfile);
Console.WriteLine(root.XmpPackage.Schemes.Photoshop.Country);
Console.WriteLine(root.XmpPackage.Schemes.Photoshop.City);
Console.WriteLine(root.XmpPackage.Schemes.Photoshop.DateCreated);
// ...
}
// ...
}
}
Evenzo zijn er veel instelmethoden om verschillende XMP-eigenschappen in te stellen of bij te werken. U kunt zelfs uw eigen sleutel/waarde-paar opgeven om de aangepaste XMP-pakketeigenschap in te stellen.
Verwijder EXIF- en XMP-metadata van HEIC/HEIF-afbeeldingen in C#
U kunt het respectieve EXIF-pakket of XMP-pakket gewoon instellen op null om alle metadata-eigenschappen te verwijderen.
De volgende code verwijdert de EXIF-gegevens van HEIC-afbeeldingen in C#.
using (Metadata metadata = new Metadata("image.heic"))
{
IExif root = metadata.GetRootPackage() as IExif;
if (root != null)
{
root.ExifPackage = null;
metadata.Save("no-exif-image.heic");
}
}
De volgende code verwijdert de XMP-gegevens van HEIC-afbeeldingen in C#.
using (Metadata metadata = new Metadata("image.heic"))
{
IXmp root = metadata.GetRootPackage() as IXmp;
if (root != null)
{
root.XmpPackage = null;
metadata.Save("no-xmp-image.heic");
}
}
Ontvang een gratis API-licentie
U kunt een gratis tijdelijke licentie krijgen om de API te gebruiken zonder de evaluatiebeperkingen.
Conclusie
Kortom, we hebben geleerd om EXIF- en XMP-metadata uit de HEIF/HEIC-afbeeldingen in C# te extraheren, bij te werken en te verwijderen. Verder heb je gezien hoe je IFD- en GPS-informatie uit deze afbeeldingen kunt halen. U kunt deze informatie nu eenvoudig verkrijgen en ook beginnen met het bouwen van uw eigen applicaties zoals GroupDocs.Metadata App Product Family om metadata-informatie te automatiseren.
Voor meer informatie, opties en voorbeelden kun je de documentation en de GitHub repository bezoeken. Neem voor verdere vragen contact met ons op via het ondersteunings forum.