50  
netcore
 
RU EN
Jul 15, 2024

Convert images to WebP in C# .NET 7

Convert images to WebP in C# .NET 7
Источник:
Просмотров:
4030
Convert images to WebP in C# .NET 7 favorites 0

I recently migrated this blog from WordPress to a custom Nuxt site. I moved from WordPress to have more control over the blog and not have to rely on plugins to do everything. It’s worked out really well but there is one plugin I do miss: Smush ☹️

Performance is really important for all websites. It improves user experience and has a big impact on SEO rankings. The standard tool for measuring performance is Google Lighthouse. It’s what I used when I migrated this blog. Lighthouse scores your performance out of 100 and gives suggestions on how to improve it.

Images are often the biggest assets in a blog post and can really damage the Lighthouse score. This is where Smush comes in. Smush does a great job of automatically optimizing your blog’s images. Optimized images helps your blog load quickly and get a good Lighthouse score.

Now that I don’t have access to Smush on my custom Nuxt site I have to optimize the images myself…

An improvement that Lighthouse always suggests is to convert all images to the WebP format. WebP is a replacement for Jpeg, Png and Gif images. It has a much smaller file size which is why Lighthouse suggests it. Converting all my images to it should give the blog a nice boast 🚀

All the images on this blog are served by an Azure function and cached via Cloudflare. This means I can convert them to WebP on the fly inside the function.

Anyway that’s a really long explanation for just a couple lines of code 😅

All you need is the SixLabors.ImageSharp Nuget package and some code like this:

var imageBytes = await File.ReadAllBytesAsync("your-image.jpg");

using var inStream = new MemoryStream(imageBytes);
            
using var myImage = await Image.LoadAsync(inStream);

using var outStream = new MemoryStream();
            
await myImage.SaveAsync(outStream, new WebpEncoder());

return new FileContentResult(outStream.ToArray(), "image/webp");

WebP file size example

Lighthouse isn’t lying BTW, the difference in file size is actually really good…

For example, this screenshot of my blog home page goes from 622KB as a PNG to just 72KB as a WebP 👀

Похожее
Mar 28, 2024
Author: Hilal Yazbek
gRPC is a powerful framework for working with Remote Procedure Calls. RPCs allow you to write code as though it will be run on a local computer, even though it may be executed on another computer. One of the key...
Nov 25, 2022
Author: Amit Naik
In this article, we will see Distributed caching, Redis cache, and also Redis caching in ASP.NET Core. Follow me on Github and Download source code from GitHub Table of Content What is distributed caching and its benefit IDistributedCache interface Framework...
Dec 1, 2022
Author: George Dyrrachitis
Having a system which is composed by distributed applications is a great idea, but a way to communicate with each other is required. A very popular architecture is the so called MDA or Message Driven Architecture, where a system is...
Jul 29, 2024
Author: Rick Strahl
Over the last few years, Markdown has become a ubiquitous text-entry model for HTML text. It's creeping up in more and more places and has become a standard for documents that are shared and edited for documentation purposes on the...
Написать сообщение
Тип
Почта
Имя
*Сообщение
RSS
Если вам понравился этот сайт и вы хотите меня поддержать, вы можете
Разработка игр на Unity: с нуля до профессионала
9 главных трендов в разработке фронтенда в 2024 году
Как мы столкнулись с версионированием и осознали, что вариант «просто проставить цифры» не работает
Переход от монолита к микросервисам: история и практика
14 вопросов об индексах в SQL Server, которые вы стеснялись задать
Performance review, ачивки и погоня за повышением грейда — что может причинить боль сотруднику IT-компании?
Тестирование PRTG Network Monitor и сравнение с Zabbix
Путеводитель по репликации баз данных
Soft skills: 18 самых важных навыков, которыми должен владеть каждый работник
Система визуализации и мониторинга. Grafana + Prometheus
Boosty
Donate to support the project
GitHub account
GitHub profile