Browse Source

Added docs to the metadata properties

pull/1706/head
Dmitry Pentin 5 years ago
parent
commit
54105e3239
  1. 4
      src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs
  2. 46
      src/ImageSharp/Formats/Jpeg/JpegMetadata.cs

4
src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs

@ -831,7 +831,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
case 0: case 0:
{ {
Quantization.EstimateQuality(ref table, Quantization.UnscaledQuant_Luminance, out double quality, out double variance); Quantization.EstimateQuality(ref table, Quantization.UnscaledQuant_Luminance, out double quality, out double variance);
jpegMetadata.LumaQuality = quality; jpegMetadata.LuminanceQuality = quality;
if (variance <= Quantization.StandardLuminanceTableVarianceThreshold) if (variance <= Quantization.StandardLuminanceTableVarianceThreshold)
{ {
jpegMetadata.LumaQuantizationTable = table.RoundAsInt16Block(); jpegMetadata.LumaQuantizationTable = table.RoundAsInt16Block();
@ -844,7 +844,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
case 1: case 1:
{ {
Quantization.EstimateQuality(ref table, Quantization.UnscaledQuant_Chrominance, out double quality, out double variance); Quantization.EstimateQuality(ref table, Quantization.UnscaledQuant_Chrominance, out double quality, out double variance);
jpegMetadata.ChromaQuality = quality; jpegMetadata.ChrominanceQuality = quality;
if (variance <= Quantization.StandardChrominanceTableVarianceThreshold) if (variance <= Quantization.StandardChrominanceTableVarianceThreshold)
{ {
jpegMetadata.ChromaQuantizationTable = table.RoundAsInt16Block(); jpegMetadata.ChromaQuantizationTable = table.RoundAsInt16Block();

46
src/ImageSharp/Formats/Jpeg/JpegMetadata.cs

@ -29,8 +29,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
this.LumaQuantizationTable = other.LumaQuantizationTable; this.LumaQuantizationTable = other.LumaQuantizationTable;
this.ChromaQuantizationTable = other.ChromaQuantizationTable; this.ChromaQuantizationTable = other.ChromaQuantizationTable;
this.LumaQuality = other.LumaQuality; this.LuminanceQuality = other.LuminanceQuality;
this.ChromaQuality = other.ChromaQuality; this.ChrominanceQuality = other.ChrominanceQuality;
} }
/// <summary> /// <summary>
@ -49,24 +49,48 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
/// </remarks> /// </remarks>
internal Block8x8? ChromaQuantizationTable { get; set; } internal Block8x8? ChromaQuantizationTable { get; set; }
internal double LumaQuality { get; set; } /// <summary>
/// Gets or sets the jpeg luminance quality.
/// </summary>
/// <remarks>
/// This value might not be accurate if it was calculated during jpeg decoding
/// with non-complient ITU quantization tables.
/// </remarks>
public double LuminanceQuality { get; set; }
internal double ChromaQuality { get; set; } /// <summary>
/// Gets or sets the jpeg chrominance quality.
/// </summary>
/// <remarks>
/// This value might not be accurate if it was calculated during jpeg decoding
/// with non-complient ITU quantization tables.
/// </remarks>
public double ChrominanceQuality { get; set; }
/// <summary>
/// Gets a value indicating whether jpeg luminance data was encoded using ITU complient quantization table.
/// </summary>
public bool UsesStandardLuminanceTable => !this.LumaQuantizationTable.HasValue;
/// <summary>
/// Gets a value indicating whether jpeg luminance data was encoded using ITU complient quantization table.
/// </summary>
public bool UsesStandardChrominanceTable => !this.ChromaQuantizationTable.HasValue;
/// <summary> /// <summary>
/// Gets or sets the encoded quality. /// Gets or sets the encoded quality.
/// </summary> /// </summary>
[Obsolete("Use LumanQuality and ChromaQuality instead. Quality is now separated for luminance and chrominance data.")]
public int Quality public int Quality
{ {
get => (int)Math.Round(this.LumaQuality); get => (int)Math.Round(this.LuminanceQuality + this.ChrominanceQuality);
set => this.LumaQuality = value; set
{
this.LuminanceQuality = value;
this.ChrominanceQuality = value;
}
} }
/// <summary>
/// Gets a value indicating whether jpeg was encoded using ITU section spec K.1 quantization tables
/// </summary>
public bool ItuSpecQuantization => !this.LumaQuantizationTable.HasValue && !this.ChromaQuantizationTable.HasValue;
/// <summary> /// <summary>
/// Gets or sets the encoded quality. /// Gets or sets the encoded quality.
/// </summary> /// </summary>

Loading…
Cancel
Save