diff --git a/src/ImageSharp/Formats/Tga/TgaEncoder.cs b/src/ImageSharp/Formats/Tga/TgaEncoder.cs
index 52a300f2ed..2fcbb822f5 100644
--- a/src/ImageSharp/Formats/Tga/TgaEncoder.cs
+++ b/src/ImageSharp/Formats/Tga/TgaEncoder.cs
@@ -21,7 +21,7 @@ namespace SixLabors.ImageSharp.Formats.Tga
///
/// Gets or sets a value indicating whether no compression or run length compression should be used.
///
- public TgaCompression Compression { get; set; }
+ public TgaCompression Compression { get; set; } = TgaCompression.RunLength;
///
public void Encode(Image image, Stream stream)
diff --git a/src/ImageSharp/Formats/Tga/TgaImageTypeExtensions.cs b/src/ImageSharp/Formats/Tga/TgaImageTypeExtensions.cs
index 38477f09f5..6a30cdddd7 100644
--- a/src/ImageSharp/Formats/Tga/TgaImageTypeExtensions.cs
+++ b/src/ImageSharp/Formats/Tga/TgaImageTypeExtensions.cs
@@ -30,17 +30,15 @@ namespace SixLabors.ImageSharp.Formats.Tga
/// true, if its a valid tga image type.
public static bool IsValid(this TgaImageType imageType)
{
- byte imageTypeVal = (byte)imageType;
-
- switch (imageTypeVal)
+ switch (imageType)
{
- case 0:
- case 1:
- case 2:
- case 3:
- case 9:
- case 10:
- case 11:
+ case TgaImageType.NoImageData:
+ case TgaImageType.ColorMapped:
+ case TgaImageType.TrueColor:
+ case TgaImageType.BlackAndWhite:
+ case TgaImageType.RleColorMapped:
+ case TgaImageType.RleTrueColor:
+ case TgaImageType.RleBlackAndWhite:
return true;
default:
diff --git a/tests/ImageSharp.Benchmarks/Codecs/DecodeTga.cs b/tests/ImageSharp.Benchmarks/Codecs/DecodeTga.cs
new file mode 100644
index 0000000000..e3c7216102
--- /dev/null
+++ b/tests/ImageSharp.Benchmarks/Codecs/DecodeTga.cs
@@ -0,0 +1,42 @@
+// Copyright (c) Six Labors and contributors.
+// Licensed under the Apache License, Version 2.0.
+
+using System.IO;
+
+using BenchmarkDotNet.Attributes;
+
+using ImageMagick;
+
+using SixLabors.ImageSharp.PixelFormats;
+using SixLabors.ImageSharp.Tests;
+using SixLabors.Primitives;
+
+namespace SixLabors.ImageSharp.Benchmarks.Codecs
+{
+ [Config(typeof(Config.ShortClr))]
+ public class DecodeTga : BenchmarkBase
+ {
+ private string TestImageFullPath => Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
+
+ [Params(TestImages.Tga.Bit24)]
+ public string TestImage { get; set; }
+
+ [Benchmark(Baseline = true, Description = "ImageMagick Tga")]
+ public Size TgaImageMagick()
+ {
+ using (var magickImage = new MagickImage(this.TestImageFullPath))
+ {
+ return new Size(magickImage.Width, magickImage.Height);
+ }
+ }
+
+ [Benchmark(Description = "ImageSharp Tga")]
+ public Size TgaCore()
+ {
+ using (var image = Image.Load(this.TestImageFullPath))
+ {
+ return new Size(image.Width, image.Height);
+ }
+ }
+ }
+}
diff --git a/tests/ImageSharp.Benchmarks/Codecs/EncodeTga.cs b/tests/ImageSharp.Benchmarks/Codecs/EncodeTga.cs
new file mode 100644
index 0000000000..ddcbec218e
--- /dev/null
+++ b/tests/ImageSharp.Benchmarks/Codecs/EncodeTga.cs
@@ -0,0 +1,54 @@
+// Copyright (c) Six Labors and contributors.
+// Licensed under the Apache License, Version 2.0.
+
+using System.IO;
+
+using BenchmarkDotNet.Attributes;
+
+using ImageMagick;
+
+using SixLabors.ImageSharp.PixelFormats;
+using SixLabors.ImageSharp.Tests;
+
+namespace SixLabors.ImageSharp.Benchmarks.Codecs
+{
+ [Config(typeof(Config.ShortClr))]
+ public class EncodeTga : BenchmarkBase
+ {
+ private MagickImage tgaMagick;
+ private Image tgaCore;
+
+ private string TestImageFullPath => Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
+
+ [Params(TestImages.Tga.Bit24)]
+ public string TestImage { get; set; }
+
+ [GlobalSetup]
+ public void ReadImages()
+ {
+ if (this.tgaCore == null)
+ {
+ this.tgaCore = Image.Load(TestImageFullPath);
+ this.tgaMagick = new MagickImage(this.TestImageFullPath);
+ }
+ }
+
+ [Benchmark(Baseline = true, Description = "Magick Tga")]
+ public void BmpSystemDrawing()
+ {
+ using (var memoryStream = new MemoryStream())
+ {
+ this.tgaMagick.Write(memoryStream, MagickFormat.Tga);
+ }
+ }
+
+ [Benchmark(Description = "ImageSharp Tga")]
+ public void BmpCore()
+ {
+ using (var memoryStream = new MemoryStream())
+ {
+ this.tgaCore.SaveAsBmp(memoryStream);
+ }
+ }
+ }
+}
diff --git a/tests/ImageSharp.Benchmarks/ImageSharp.Benchmarks.csproj b/tests/ImageSharp.Benchmarks/ImageSharp.Benchmarks.csproj
index 14ad5635cd..a57d388a95 100644
--- a/tests/ImageSharp.Benchmarks/ImageSharp.Benchmarks.csproj
+++ b/tests/ImageSharp.Benchmarks/ImageSharp.Benchmarks.csproj
@@ -16,6 +16,7 @@
+