---
title: "Compare Image Format Compressions"
canonical: https://www.graphicsmill.com/samples/Codecs/WebP/CompareImageFormatCompressions_cs
product: "Graphics Mill"
source: "Codecs/WebP/CompareImageFormatCompressions.cs"
---

# Compare Image Format Compressions

Compares compression of WebP, JPEG and PNG image formats.

## Instruction

Compares compression efficiency between WebP, JPEG, and PNG image formats.

## Usings

```csharp
using System;
using Aurigma.GraphicsMill.Codecs;
```

## Code Snippet

```csharp
using (var reader = new JpegReader("Chicago.jpg"))
using (var writerWebP = new WebPWriter("CompareImageFormatCompressions.webp"))
using (var writerJpeg = new JpegWriter("CompareImageFormatCompressions.jpg"))
using (var writerPng = new PngWriter("CompareImageFormatCompressions.png"))
{
    writerWebP.Quality = 90f;
    writerJpeg.Quality = 90;

    Pipeline.Run(reader + writerWebP);
    Pipeline.Run(reader + writerJpeg);
    Pipeline.Run(reader + writerPng);
}

var webpFile = new System.IO.FileInfo("CompareImageFormatCompressions.webp");
var jpegFile = new System.IO.FileInfo("CompareImageFormatCompressions.jpg");
var pngFile = new System.IO.FileInfo("CompareImageFormatCompressions.png");

Console.WriteLine("WebP: {0} KB", webpFile.Length / 1024);
Console.WriteLine("JPEG: {0} KB", jpegFile.Length / 1024);
Console.WriteLine("PNG: {0} KB", pngFile.Length / 1024);
```

## Explanation

The following code:

- Reads an input JPEG image.
- Converts and saves it in three formats: WebP (90% quality), JPEG (90% quality), and PNG.
- Uses `Pipeline.Run()` for memory-friendly format conversion.
- Measures the size of each output file in bytes and prints the results to the console.

## Tags

- [Compression](<https://www.graphicsmill.com/samples/tags/compression_md>): Tuning image compression settings
- [Format Conversion](<https://www.graphicsmill.com/samples/tags/format-conversion_md>): Converting images between formats
- [JPG](<https://www.graphicsmill.com/samples/tags/jpg_md>): Reading and writing JPEG images
- [Pipeline](<https://www.graphicsmill.com/samples/tags/pipeline_md>): Working with images via the Pipeline API
- [PNG](<https://www.graphicsmill.com/samples/tags/png_md>): Reading and writing PNG images
- [WEBP](<https://www.graphicsmill.com/samples/tags/webp_md>): Reading and writing WebP images

## Input

- [Chicago.jpg](<https://www.graphicsmill.com/samples/Codecs/compiled/Debug/Chicago_jpg>) (preview)

## Output

- [CompareImageFormatCompressions.txt](<https://www.graphicsmill.com/samples/Codecs/compiled/Debug/CompareImageFormatCompressions_txt>) (preview)
- [CompareImageFormatCompressions.webp](<https://www.graphicsmill.com/samples/Codecs/compiled/Debug/CompareImageFormatCompressions_webp>) (preview)
- [CompareImageFormatCompressions.jpg](<https://www.graphicsmill.com/samples/Codecs/compiled/Debug/CompareImageFormatCompressions_jpg>) (preview)
- [CompareImageFormatCompressions.png](<https://www.graphicsmill.com/samples/Codecs/compiled/Debug/CompareImageFormatCompressions_png>) (preview)

## Used APIs

- [Aurigma.GraphicsMill.Codecs.JpegReader](<https://www.graphicsmill.com/docs/gm/T_Aurigma_GraphicsMill_Codecs_JpegReader.htm.md>)
- [Aurigma.GraphicsMill.Codecs.JpegWriter](<https://www.graphicsmill.com/docs/gm/T_Aurigma_GraphicsMill_Codecs_JpegWriter.htm.md>)
- [Aurigma.GraphicsMill.Codecs.JpegWriter.Quality](<https://www.graphicsmill.com/docs/gm/P_Aurigma_GraphicsMill_Codecs_JpegWriter_Quality.htm.md>)
- [Aurigma.GraphicsMill.Codecs.PngWriter](<https://www.graphicsmill.com/docs/gm/T_Aurigma_GraphicsMill_Codecs_PngWriter.htm.md>)
- [Aurigma.GraphicsMill.Codecs.WebPWriter](<https://www.graphicsmill.com/docs/gm/T_Aurigma_GraphicsMill_Codecs_WebPWriter.htm.md>)
- [Aurigma.GraphicsMill.Codecs.WebPWriter.Quality](<https://www.graphicsmill.com/docs/gm/P_Aurigma_GraphicsMill_Codecs_WebPWriter_Quality.htm.md>)
