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.
58 lines
3.0 KiB
58 lines
3.0 KiB
// <copyright file="TiffEncoderMetadataTests.cs" company="James Jackson-South">
|
|
// Copyright (c) James Jackson-South and contributors.
|
|
// Licensed under the Apache License, Version 2.0.
|
|
// </copyright>
|
|
|
|
namespace ImageSharp.Tests
|
|
{
|
|
using System;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using Xunit;
|
|
|
|
using ImageSharp.Formats;
|
|
using ImageSharp.Formats.Tiff;
|
|
using System.Collections.Generic;
|
|
|
|
public class TiffEncoderMetadataTests
|
|
{
|
|
public static object[][] BaselineMetadataValues = new[] { new object[] { TiffTags.Artist, TiffMetadataNames.Artist, "My Artist Name" },
|
|
new object[] { TiffTags.Copyright, TiffMetadataNames.Copyright, "My Copyright Statement" },
|
|
new object[] { TiffTags.DateTime, TiffMetadataNames.DateTime, "My DateTime Value" },
|
|
new object[] { TiffTags.HostComputer, TiffMetadataNames.HostComputer, "My Host Computer Name" },
|
|
new object[] { TiffTags.ImageDescription, TiffMetadataNames.ImageDescription, "My Image Description" },
|
|
new object[] { TiffTags.Make, TiffMetadataNames.Make, "My Camera Make" },
|
|
new object[] { TiffTags.Model, TiffMetadataNames.Model, "My Camera Model" },
|
|
new object[] { TiffTags.Software, TiffMetadataNames.Software, "My Imaging Software" }};
|
|
|
|
[Fact]
|
|
public void AddMetadata_SetsImageResolution()
|
|
{
|
|
Image<Rgba32> image = new Image<Rgba32>(100, 100);
|
|
image.MetaData.HorizontalResolution = 40.0;
|
|
image.MetaData.VerticalResolution = 50.5;
|
|
TiffEncoderCore encoder = new TiffEncoderCore(null);
|
|
|
|
List<TiffIfdEntry> ifdEntries = new List<TiffIfdEntry>();
|
|
encoder.AddMetadata(image, ifdEntries);
|
|
|
|
Assert.Equal(new Rational(40, 1), ifdEntries.GetUnsignedRational(TiffTags.XResolution));
|
|
Assert.Equal(new Rational(101, 2), ifdEntries.GetUnsignedRational(TiffTags.YResolution));
|
|
Assert.Equal(TiffResolutionUnit.Inch, (TiffResolutionUnit?)ifdEntries.GetInteger(TiffTags.ResolutionUnit));
|
|
}
|
|
|
|
[Theory]
|
|
[MemberData(nameof(BaselineMetadataValues))]
|
|
public void AddMetadata_SetsAsciiMetadata(ushort tag, string metadataName, string metadataValue)
|
|
{
|
|
Image<Rgba32> image = new Image<Rgba32>(100, 100);
|
|
image.MetaData.Properties.Add(new ImageProperty(metadataName, metadataValue));
|
|
TiffEncoderCore encoder = new TiffEncoderCore(null);
|
|
|
|
List<TiffIfdEntry> ifdEntries = new List<TiffIfdEntry>();
|
|
encoder.AddMetadata(image, ifdEntries);
|
|
|
|
Assert.Equal(metadataValue + "\0", ifdEntries.GetAscii(tag));
|
|
}
|
|
}
|
|
}
|