-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathImageFileOptimizationTests.cs
More file actions
112 lines (97 loc) · 6.01 KB
/
ImageFileOptimizationTests.cs
File metadata and controls
112 lines (97 loc) · 6.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
using DotNetCampus.MediaConverters.Imaging.Optimizations;
using SixLabors.ImageSharp;
namespace DotNetCampus.MediaConverters.Tests.Imaging.Optimizations;
[TestClass()]
public class ImageFileOptimizationTests
{
[TestMethod()]
public async Task OptimizeImageFileAsyncTest1()
{
var file = TestFileProvider.GetTestFile(TestFileProvider.DefaultTestImageName);
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(new ImageFileOptimizationContext(file, TestHelper.WorkingDirectory, 100));
Assert.AreEqual(true, imageFileOptimizationResult.IsSuccess);
}
[TestMethod("传入不存在的图片文件,可以返回文件不存在,优化失败")]
public async Task OptimizeImageFileAsyncTest2()
{
var file = new FileInfo("The Not Exists Image File.png");
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(new ImageFileOptimizationContext(file, TestHelper.WorkingDirectory, 100, null));
Assert.AreEqual(false, imageFileOptimizationResult.IsSuccess);
Assert.AreEqual(ImageFileOptimizationFailureReason.FileNotFound, imageFileOptimizationResult.FailureReason);
}
[TestMethod()]
public async Task OptimizeImageFileAsyncTest_LimitSize1()
{
var file = TestFileProvider.GetTestFile(TestFileProvider.DefaultTestImageName);
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(new ImageFileOptimizationContext(file, TestHelper.WorkingDirectory, 100, 100));
// 预期此时通过面积限制,依然宽度高度超过了限制的最大宽度高度
Assert.AreEqual(true, imageFileOptimizationResult.IsSuccess);
ImageInfo imageInfo = await Image.IdentifyAsync(imageFileOptimizationResult.OptimizedImageFile!.FullName);
Assert.AreEqual(true, imageInfo.Width > 100);
Assert.AreEqual(true, imageInfo.Width * imageInfo.Height < 100 * 100);
}
[TestMethod()]
public async Task OptimizeImageFileAsyncTest_LimitSize2()
{
var file = TestFileProvider.GetTestFile(TestFileProvider.DefaultTestImageName);
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(new ImageFileOptimizationContext(file, TestHelper.WorkingDirectory, 100, 100), useAreaSizeLimit: false);
// 不通过面积限制,宽度高度绝对都不超过限制的最大宽度高度
Assert.AreEqual(true, imageFileOptimizationResult.IsSuccess);
ImageInfo imageInfo = await Image.IdentifyAsync(imageFileOptimizationResult.OptimizedImageFile!.FullName);
Assert.AreEqual(true, imageInfo.Width <= 100);
Assert.AreEqual(true, imageInfo.Height <= 100);
}
[TestMethod()]
public async Task OptimizeImageFileAsyncTest_LimitSize3()
{
var file = TestFileProvider.GetTestFile(TestFileProvider.DefaultTestImageName);
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(new ImageFileOptimizationContext(file, TestHelper.WorkingDirectory, 600, 20), useAreaSizeLimit: false);
Assert.AreEqual(true, imageFileOptimizationResult.IsSuccess);
ImageInfo imageInfo = await Image.IdentifyAsync(imageFileOptimizationResult.OptimizedImageFile!.FullName);
Assert.AreEqual(true, imageInfo.Width <= 600);
Assert.AreEqual(true, imageInfo.Height <= 20);
}
[TestMethod()]
public async Task OptimizeImageFileAsyncTest_FormatTiff()
{
var file = TestFileProvider.GetTestFile("file_example_TIFF_1MB.tiff");
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(new ImageFileOptimizationContext(file, TestHelper.WorkingDirectory));
Assert.AreEqual(true, imageFileOptimizationResult.IsSuccess);
TestHelper.OpenFileInExplorer(imageFileOptimizationResult.OptimizedImageFile!);
}
[TestMethod()]
public async Task OptimizeImageFileAsyncTest_FormatWebp()
{
var file = TestFileProvider.GetTestFile("file_example_WEBP_50kB.webp");
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(new ImageFileOptimizationContext(file, TestHelper.WorkingDirectory));
Assert.AreEqual(true, imageFileOptimizationResult.IsSuccess);
TestHelper.OpenFileInExplorer(imageFileOptimizationResult.OptimizedImageFile!);
}
[TestMethod()]
public async Task OptimizeImageFileAsyncTest_FormatTga()
{
var file = TestFileProvider.GetTestFile("sample_640×426.tga");
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(new ImageFileOptimizationContext(file, TestHelper.WorkingDirectory));
Assert.AreEqual(true, imageFileOptimizationResult.IsSuccess);
TestHelper.OpenFileInExplorer(imageFileOptimizationResult.OptimizedImageFile!);
}
//[TestMethod()]
//public async Task OptimizeImageFileAsyncTest_FormatWmf()
//{
// var file = TestFileProvider.GetTestFile("sample.wmf");
// var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(new ImageFileOptimizationContext(file, TestHelper.WorkingDirectory));
// Assert.AreEqual(true, imageFileOptimizationResult.IsSuccess);
// Assert.AreEqual(ImageFileOptimizationFailureReason.Ok, imageFileOptimizationResult.FailureReason);
//}
[TestMethod()]
public async Task OptimizeImageFileAsyncTest_Orientation()
{
// Orientation":{"val":"Right-top","type":3},其中 type 信息是可以忽略,以 value 信息为准
// https://www.impulseadventure.com/photo/exif-orientation.html
// http://sylvana.net/jpegcrop/exif_orientation.html
var file = TestFileProvider.GetTestFile("EXIF Orientation.png");
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(new ImageFileOptimizationContext(file, TestHelper.WorkingDirectory));
Assert.AreEqual(true, imageFileOptimizationResult.IsSuccess);
TestHelper.OpenFileInExplorer(imageFileOptimizationResult.OptimizedImageFile!);
}
}