SharpMagic 1.0.2
dotnet add package SharpMagic --version 1.0.2
NuGet\Install-Package SharpMagic -Version 1.0.2
<PackageReference Include="SharpMagic" Version="1.0.2" />
paket add SharpMagic --version 1.0.2
#r "nuget: SharpMagic, 1.0.2"
// Install SharpMagic as a Cake Addin #addin nuget:?package=SharpMagic&version=1.0.2 // Install SharpMagic as a Cake Tool #tool nuget:?package=SharpMagic&version=1.0.2
NCV Sharpmagic
Tiny C# P-invoking client class built on top off libmagic (see e.g.) LibMagic. Should work on all platforms that have Libmagic as part of the OS package (including macOS). The idea behind mime-type recognition is using magic numbers and some other features.
Description
Wraps basic LibMagic calls in order to get mimetype and file type properties (if possible) using the well known library which is mostly standard on Linux
Key Features
- Highly optimized for low resource usage.
- Enables using the libmagic library to retrieve mime types or file info (as properties)
- e.g.
detected mimetype = ISO Media,MP4 Base Media v1 [IS0 14496-12:2003]
detected mimetype = JPEG image data,JFIF standard 1.01,aspect ratio,density 1x1,segment length 16,baseline,precision 8,1200x826,
components 3
- Only supporting linux or OS-es that have libmagic as part of the OS.
How To Use
To clone and run this application, you'll need Git From your command line:
# Clone this repository
$ git clone https://github.com/egbertn/SharpMagic
Credits
This software uses the following open source packages:
- [Libmagic]
- Hey-Red (inspired this code)
Usage
Register SharpMagic as singleton e.g.
// somewhere in program.cs / startup.cs
services.AddSingleTon<SharpMagic>();
//or directly:
SharpMagic sharpMagic = new();
// somewhere in your code
using var mp4 = File.OpenRead("tesje.mp4");
var (mp4MimeType, _) = sharpMagic.GuessMimeType(mp4, 2048, true);
Console.WriteLine($"detected mimetype = {mp4MimeType}");
using var jpg = File.OpenRead("gun.jpg");
var (mimeType, _) = sharpMagic.GuessMimeType(jpg, mimeOnly: true);
Console.WriteLine($"detected properties = {string.Join(',', dll.GuessMimeType(Path.GetFullPath("gun.jpg")).Properties)}");
output:
detected mimetype = video/mp4
detected mimetype = image/jpeg
detected properties = JPEG image data,JFIF standard 1.01,aspect ratio,density 1x1,segment length 16,baseline,precision 8,1200x826,components 3
detected properties = ISO Media,MP4 v2 [ISO 14496-14]
See also other great components
###ISP Session Enables Session and Application State using redis, while in an easy fashion using minimal resources. NCV ISPSession (And Application State)
###CCTV Camera Streaming and Management and Notification management. Enables you to organizate your camerastreams to a NVidia Jetson (nano e.g.) the default features plus training your own models Does not need to use the cloud, so privacy is covered for most of it. CCure Image Stream
Support
Not really. If I have time. Drop a message.
You may also like...
License
MIT
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.2 | 80 | 5/3/2024 |
* remove confusing seemingly arch-linux-only support.