mirror of https://github.com/SixLabors/ImageSharp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.8 KiB
54 lines
1.8 KiB
// <copyright file="BmpEncoder.cs" company="James Jackson-South">
|
|
// Copyright (c) James Jackson-South and contributors.
|
|
// Licensed under the Apache License, Version 2.0.
|
|
// </copyright>
|
|
|
|
namespace ImageSharp.Formats
|
|
{
|
|
using System;
|
|
using System.IO;
|
|
|
|
/// <summary>
|
|
/// Image encoder for writing an image to a stream as a Windows bitmap.
|
|
/// </summary>
|
|
/// <remarks>The encoder can currently only write 24-bit rgb images to streams.</remarks>
|
|
public class BmpEncoder : IImageEncoder
|
|
{
|
|
/// <summary>
|
|
/// Gets or sets the quality of output for images.
|
|
/// </summary>
|
|
/// <remarks>Bitmap is a lossless format so this is not used in this encoder.</remarks>
|
|
public int Quality { get; set; }
|
|
|
|
/// <inheritdoc/>
|
|
public string MimeType => "image/bmp";
|
|
|
|
/// <inheritdoc/>
|
|
public string Extension => "bmp";
|
|
|
|
/// <summary>
|
|
/// Gets or sets the number of bits per pixel.
|
|
/// </summary>
|
|
public BmpBitsPerPixel BitsPerPixel { get; set; } = BmpBitsPerPixel.Pixel24;
|
|
|
|
/// <inheritdoc/>
|
|
public bool IsSupportedFileExtension(string extension)
|
|
{
|
|
Guard.NotNullOrEmpty(extension, nameof(extension));
|
|
|
|
extension = extension.StartsWith(".") ? extension.Substring(1) : extension;
|
|
|
|
return extension.Equals(this.Extension, StringComparison.OrdinalIgnoreCase)
|
|
|| extension.Equals("dip", StringComparison.OrdinalIgnoreCase);
|
|
}
|
|
|
|
/// <inheritdoc/>
|
|
public void Encode<TColor, TPacked>(Image<TColor, TPacked> image, Stream stream)
|
|
where TColor : struct, IPackedPixel<TPacked>
|
|
where TPacked : struct
|
|
{
|
|
BmpEncoderCore encoder = new BmpEncoderCore();
|
|
encoder.Encode(image, stream, this.BitsPerPixel);
|
|
}
|
|
}
|
|
}
|
|
|