{"id":19991839,"url":"https://github.com/mirzaevolution/ThumbnailSharp","last_synced_at":"2025-05-04T11:30:23.749Z","repository":{"id":116687691,"uuid":"109653594","full_name":"mirzaevolution/ThumbnailSharp","owner":"mirzaevolution","description":"A simple but awesome library to create a flexibel thumbnail from an image for .NET Framework 4.5+","archived":false,"fork":false,"pushed_at":"2024-01-07T19:35:53.000Z","size":39,"stargazers_count":28,"open_issues_count":3,"forks_count":16,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-24T12:42:29.371Z","etag":null,"topics":["thumbnail"],"latest_commit_sha":null,"homepage":"","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/mirzaevolution.png","metadata":{"files":{"readme":"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":"2017-11-06T05:56:13.000Z","updated_at":"2024-06-15T10:47:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"fff870e4-59a2-4161-adfc-f30f7d7f28d9","html_url":"https://github.com/mirzaevolution/ThumbnailSharp","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirzaevolution%2FThumbnailSharp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirzaevolution%2FThumbnailSharp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirzaevolution%2FThumbnailSharp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirzaevolution%2FThumbnailSharp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mirzaevolution","download_url":"https://codeload.github.com/mirzaevolution/ThumbnailSharp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252133359,"owners_count":21699537,"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":["thumbnail"],"created_at":"2024-11-13T04:51:56.198Z","updated_at":"2025-05-04T11:30:23.465Z","avatar_url":"https://github.com/mirzaevolution.png","language":"C#","funding_links":[],"categories":["C\\#"],"sub_categories":[],"readme":"# ThumbnailSharp\nA specialized library to create an image thumbnail from various sources with better result and supports different image formats. A Thumbnail is something that's not very important sometimes, but for softwares/web apps that require a thumbnail to be uploaded to their databases to be used later becomes so vital. And if we just need to create a simple thumbnail, why do we need a big image composition library that holds unnecessary methods for us? Here, we introduce a simple but powerful library for creating a nice thumbnail either from local or internet (supports async/await) that produces better result than **Image.GetThumbnailImage Method** from **System.Drawing.dll**. You can consume the result of operation either as an array of bytes or a stream.\n\nHere are some samples:\n\n**Original Image (Landscape)**\n\n![landscape-image](https://raw.githubusercontent.com/mirzaevolution/ThumbnailSharp.Client/master/AllSamples/Samples/Local/landscape.jpg)\n\n**Thumbnail (Jpeg)**\n\n*size is set to 250*\n\n![landscape-image-thumbnail](https://raw.githubusercontent.com/mirzaevolution/ThumbnailSharp.Client/master/AllSamples/Samples/Local/landscape-thumbnail.jpg)\n\n\n*size is set to 450*\n\n![landscape-image-thumbnail](https://raw.githubusercontent.com/mirzaevolution/ThumbnailSharp.Client/master/AllSamples/Samples/Local/landscape-thumbnail-450.jpg)\n\n\n\n\n\n**Original Image (Portrait)**\n\n![portrait-image](https://raw.githubusercontent.com/mirzaevolution/ThumbnailSharp.Client/master/AllSamples/Samples/Local/portrait.jpg)\n\n**Thumbnail (Jpeg)**\n\n*size is set to 250*\n\n![portrait-image-thumbnail](https://raw.githubusercontent.com/mirzaevolution/ThumbnailSharp.Client/master/AllSamples/Samples/Local/portrait-thumbnail.jpg)\n\n*size is set to 450*\n\n![portrait-image-thumbnail](https://raw.githubusercontent.com/mirzaevolution/ThumbnailSharp.Client/master/AllSamples/Samples/Local/portrait-thumbnail-450.jpg)\n\n\n\n\n\n**Original Image (Square/Proportional)**\n\n![square-image](https://raw.githubusercontent.com/mirzaevolution/ThumbnailSharp.Client/master/AllSamples/Samples/Local/proportional.jpg)\n\n**Thumbnail (Jpeg)**\n\n*size is set to 250*\n\n![square-image](https://raw.githubusercontent.com/mirzaevolution/ThumbnailSharp.Client/master/AllSamples/Samples/Local/proportional-thumbnail.jpg)\n\n\n\n\n\n\nHow does it work?\nSimple, you just need to pass thumbnail size (aspect ratio will be reserved), image source, and image format.\n\n**Get thumbnail from internet source**\n\n```csharp\nbyte[] resultBytes = await new ThumbnailCreator().CreateThumbnailBytesAsync(\n\tthumbnailSize: 250,\n    \turlAddress: new Uri(\"http://www.sample-image.com/image.jpg\",UriKind.Absolute),\n    \timageFormat: Format.Jpeg\n);\n// or\nStream resultStream = await new ThumbnailCreator().CreateThumbnailStreamAsync(\n\tthumbnailSize: 250,\n    \turlAddress: new Uri(\"http://www.sample-image.com/image.png\",UriKind.Absolute),\n    \timageFormat: Format.Png\n);\n```\n\n**Get thumbnail from local source**\n\n```csharp\nbyte[] resultBytes = new ThumbnailCreator().CreateThumbnailBytes(\n\tthumbnailSize: 300,\n    \timageFileLocation: @\"C:\\images\\image.bmp\",\n    \timageFormat: Format.Bmp\n);\n//or\nStream resultStream = new ThumbnailCreator().CreateThumbnailStream(\n\tthumbnailSize: 300,\n    \timageFileLocation: @\"C:\\images\\image.bmp\",\n    \timageFormat: Format.Bmp\n);\n```\n\n**Get thumbnail from image stream**\n\n```csharp\nbyte[] resultBytes = new ThumbnailCreator().CreateThumbnailBytes(\n\tthumbnailSize: 300,\n    \timageStream: new FileStream(@\"C:\\images\\image.jpg\",FileMode.Open,FileAccess.ReadWrite),\n    \timageFormat: Format.Jpeg\n);\n//or\nStream resultStream = new ThumbnailCreator().CreateThumbnailStream(\n\tthumbnailSize: 300,\n  \timageStream: new FileStream(@\"C:\\images\\image.jpg\",FileMode.Open,FileAccess.ReadWrite),\n    \timageFormat: Format.Jpeg\n);\n```\n\n**Get thumbnail from image bytes**\n\n```csharp\nbyte[] buffer = GetImageBytes(); //this is just fictitious method to get image data in bytes\n\nbyte[] resultBytes = new ThumbnailCreator().CreateThumbnailBytes(\n\tthumbnailSize: 300,\n    \timageBytes: buffer,\n    \timageFormat: Format.Gif\n);\n//or\nStream resultStream = new ThumbnailCreator().CreateThumbnailStream(\n\tthumbnailSize: 300,\n    \timageBytes: buffer,\n    \timageFormat: Format.Tiff\n);\n```\n\n\n\n**Take a look our softwares that were built using this library:**\n\n### [ThumbnailSharp.Clients](https://github.com/mirzaevolution/ThumbnailSharp.Client)\n\n\n---\n\nReady to taste it? \n\n#### Install from [Nuget.Org](https://www.nuget.org/packages/ThumbnailSharp/1.0.0)\n\n```\nInstall-Package ThumbnailSharp -Version 1.0.0\n```\n\n---\n\n\n\nCreated by: **[Mirza Ghulam Rasyid](https://twitter.com/mirzaevolution)**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmirzaevolution%2FThumbnailSharp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmirzaevolution%2FThumbnailSharp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmirzaevolution%2FThumbnailSharp/lists"}