{"id":28726067,"url":"https://github.com/junian/sharpexiftool","last_synced_at":"2025-12-30T22:33:18.891Z","repository":{"id":239128932,"uuid":"798626265","full_name":"junian/SharpExifTool","owner":"junian","description":"ExifTool CLI Wrapper in C#. Tested on Windows and macOS.","archived":false,"fork":false,"pushed_at":"2024-11-06T03:18:54.000Z","size":326,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-10T00:05:36.083Z","etag":null,"topics":["csharp","dotnet","exif","exiftool","linux","macos","metadata","windows"],"latest_commit_sha":null,"homepage":"https://www.junian.dev/SharpExifTool/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/junian.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-10T06:42:11.000Z","updated_at":"2024-12-08T21:20:42.000Z","dependencies_parsed_at":"2024-05-11T03:26:24.281Z","dependency_job_id":"b651a0db-5ba0-48d9-aea7-8fca9de74104","html_url":"https://github.com/junian/SharpExifTool","commit_stats":null,"previous_names":["junian/sharp-exiftool","junian/sharpexiftool"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/junian/SharpExifTool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junian%2FSharpExifTool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junian%2FSharpExifTool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junian%2FSharpExifTool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junian%2FSharpExifTool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/junian","download_url":"https://codeload.github.com/junian/SharpExifTool/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junian%2FSharpExifTool/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259971389,"owners_count":22940013,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","dotnet","exif","exiftool","linux","macos","metadata","windows"],"created_at":"2025-06-15T12:08:58.929Z","updated_at":"2025-12-30T22:33:18.883Z","avatar_url":"https://github.com/junian.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/junian/SharpExifTool/master/assets/img/sharp-exiftool-icon.png\" alt=\"SharpExifTool Logo\"\u003e\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eSharpExifTool\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003eC# Wrapper for ExifTool by Phil Harvey. Available for Windows, macOS, and Linux.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/junian/SharpExifTool/\"\u003e\u003cimg src=\"https://img.shields.io/badge/GitHub-%23121011.svg?logo=github\u0026logoColor=white\u0026style=for-the-badge\" alt=\"SharpExifTool on GitHub\" title=\"SharpExifTool on GitHub\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://www.nuget.org/packages/SharpExifTool/\"\u003e\u003cimg src=\"https://img.shields.io/nuget/v/SharpExifTool.svg?style=for-the-badge\" alt=\"SharpExifTool latest version on NuGet\" title=\"SharpExifTool latest version on NuGet\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://www.nuget.org/packages/SharpExifTool/\"\u003e\u003cimg src=\"https://img.shields.io/nuget/dt/SharpExifTool.svg?style=for-the-badge\" alt=\"SharpExifTool total downloads on NuGet\" title=\"SharpExifTool total downloads on NuGet\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n----\n\n## Installation\n\nGet [SharpExifTool](https://www.nuget.org/packages/SharpExifTool/) from NuGet.\n\n```shell\ndotnet add package SharpExifTool\n```\n\n## Usage\n\n### Init\n\nYou can create an exiftool instance by using the built-in `exiftool` binary.\n\n```csharp\nusing(var exiftool = new SharpExifTool.ExifTool())\n{\n // Do something here\n}\n```\n\n### Read All EXIF / Metadata Tags\n\n```csharp\nusing(var exiftool = new SharpExifTool.ExifTool())\n{\n    await exiftool.ExtractAllMetadataAsync(filename: \"image.jpg\");\n}\n```\n\n### Write EXIF / Metadata Tags\n\n```csharp\nusing(var exiftool = new SharpExifTool.ExifTool())\n{\n    await exiftool.WriteTagsAsync(\n        filename: \"image.jpg\", \n        properties: new Dictionary\u003cstring, string\u003e\n        {\n            [\"artist\"] = [\"Phil Harvey\"],    \n        });\n}\n```\n\n### Remove All Safe EXIF / Metadata Tags\n\n```csharp\nusing(var exiftool = new SharpExifTool.ExifTool())\n{\n    await exiftool.RemoveAllMetadataAsync(filename: \"image.jpg\");\n}\n```\n\n### Custom Command\n\nFor example, you want to execute the following in the command line:\n\n```shell\nexiftool -artist=\"Phil Harvey\" -copyright=\"2011 Phil Harvey\" a.jpg\n```\n\nYou can do it like this in C#:\n\n```csharp\nusing(var exiftool = new SharpExifTool.ExifTool())\n{\n    await exiftool.ExecuteAsync(\n        \"-artist=\\\"Phil Harvey\\\"\", \n        \"-copyright=\\\"2011 Phil Harvey\\\"\", \n        \"a.jpg\");\n}\n```\n\n## Development\n\nBefore starting development, install 3rd party dependencies by executing `getlibs.sh` (it'll only work on macOS or Unix operating system, no Windows script for now).\n\n```bash\n$ ./getlibs.sh\n```\n\nThis will download and extract files based on `.gitbinmodules` content and place them under the `libs` directory.\n\nTo use a different version of `exiftool`, you can edit the `.gitbinmodules` file and change it with your desired version.\n\nYou can also download from [official website](https://exiftool.org) and extract the files manually. Put them in the `libs` directory so it'll look something like this:\n\n```shell\n.\n├── docs\n│   └── README.md\n├── libs\n│   ├── ExifTool.Unix\n│   │   ├── Makefile.PL\n│   │   ├── arg_files\n│   │   ├── build_geolocation\n│   │   ├── config_files\n│   │   ├── exiftool\n│   │   ├── fmt_files\n│   │   ├── lib\n│   │   ├── perl-Image-ExifTool.spec\n│   │   └── t\n│   └── ExifTool.Win\n│       └── exiftool.exe\n└── src\n```\n\n## Credits\n\n- [ExifTool](https://exiftool.org) by Phil Harvey.\n- [FileMeta/ExifToolWrapper](https://github.com/FileMeta/ExifToolWrapper): CodeBit: C# Wrapper for Phil Harvey's ExifTool\n  \n## License\n\n- This [SharpExifTool](https://github.com/junian/SharpExifTool) project is licensed under [MIT License](https://github.com/junian/SharpExifTool/blob/master/LICENSE).\n- The [ExifTool](https://exiftool.org/#license) is free software; you can redistribute it and/or modify it under the same terms as [Perl itself](https://dev.perl.org/licenses/).\n\n---\n\nMade with ☕ by [Junian.dev](https://www.junian.dev).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunian%2Fsharpexiftool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjunian%2Fsharpexiftool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunian%2Fsharpexiftool/lists"}