1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using System.IO; 5 6 namespace FreeImageNETUnitTest 7 { 8 internal enum ImageType : byte 9 { 10 Even, 11 Odd, 12 JPEG, 13 Metadata, 14 Multipaged 15 } 16 17 internal enum ImageColorType : byte 18 { 19 Type_01_Dither, 20 Type_01_Threshold, 21 Type_04, 22 Type_04_Greyscale_MinIsBlack, 23 Type_04_Greyscale_Unordered, 24 Type_08, 25 Type_08_Greyscale_MinIsBlack, 26 Type_08_Greyscale_Unordered, 27 Type_16_555, 28 Type_16_565, 29 Type_24, 30 Type_32, 31 } 32 33 internal class ImageManager 34 { 35 public readonly string baseDirectory = null; 36 ImageManager()37 public ImageManager() 38 : this(new DirectoryInfo(Environment.CurrentDirectory).Parent.Parent.Parent.FullName + @"\UnitTestData\Images\") 39 { 40 } 41 ImageManager(string baseDirectory)42 public ImageManager(string baseDirectory) 43 { 44 if (!Directory.Exists(baseDirectory)) 45 throw new DirectoryNotFoundException(); 46 this.baseDirectory = baseDirectory; 47 } 48 GetBitmapPath(ImageType type, ImageColorType colorType)49 public string GetBitmapPath(ImageType type, ImageColorType colorType) 50 { 51 string filename = null; 52 53 switch (type) 54 { 55 case ImageType.Even: 56 switch (colorType) 57 { 58 case ImageColorType.Type_01_Dither: 59 filename = baseDirectory + @"Even\Image_01_dither.tif"; 60 break; 61 case ImageColorType.Type_01_Threshold: 62 filename = baseDirectory + @"Even\Image_01_threshold.tif"; 63 break; 64 case ImageColorType.Type_04: 65 filename = baseDirectory + @"Even\Image_04.tif"; 66 break; 67 case ImageColorType.Type_04_Greyscale_MinIsBlack: 68 filename = baseDirectory + @"Even\Image_04_gs_minisblack.tif"; 69 break; 70 case ImageColorType.Type_04_Greyscale_Unordered: 71 filename = baseDirectory + @"Even\Image_04_gs_unordered.tif"; 72 break; 73 case ImageColorType.Type_08: 74 filename = baseDirectory + @"Even\Image_08.tif"; 75 break; 76 case ImageColorType.Type_08_Greyscale_MinIsBlack: 77 filename = baseDirectory + @"Even\Image_08_gs_minisblack.tif"; 78 break; 79 case ImageColorType.Type_08_Greyscale_Unordered: 80 filename = baseDirectory + @"Even\Image_08_gs_unordered.tif"; 81 break; 82 case ImageColorType.Type_16_555: 83 filename = baseDirectory + @"Even\Image_16_555.bmp"; 84 break; 85 case ImageColorType.Type_16_565: 86 filename = baseDirectory + @"Even\Image_16_565.bmp"; 87 break; 88 case ImageColorType.Type_24: 89 filename = baseDirectory + @"Even\Image_24.tif"; 90 break; 91 case ImageColorType.Type_32: 92 filename = baseDirectory + @"Even\Image_32.tif"; 93 break; 94 } 95 break; 96 case ImageType.Odd: 97 switch (colorType) 98 { 99 case ImageColorType.Type_01_Dither: 100 filename = baseDirectory + @"Odd\Image_01_dither.tif"; 101 break; 102 case ImageColorType.Type_01_Threshold: 103 filename = baseDirectory + @"Odd\Image_01_threshold.tif"; 104 break; 105 case ImageColorType.Type_04: 106 filename = baseDirectory + @"Odd\Image_04.tif"; 107 break; 108 case ImageColorType.Type_04_Greyscale_MinIsBlack: 109 filename = baseDirectory + @"Odd\Image_04_gs_minisblack.tif"; 110 break; 111 case ImageColorType.Type_04_Greyscale_Unordered: 112 filename = baseDirectory + @"Odd\Image_04_gs_unordered.tif"; 113 break; 114 case ImageColorType.Type_08: 115 filename = baseDirectory + @"Odd\Image_08.tif"; 116 break; 117 case ImageColorType.Type_08_Greyscale_MinIsBlack: 118 filename = baseDirectory + @"Odd\Image_08_gs_minisblack.tif"; 119 break; 120 case ImageColorType.Type_08_Greyscale_Unordered: 121 filename = baseDirectory + @"Odd\Image_08_gs_unordered.tif"; 122 break; 123 case ImageColorType.Type_16_555: 124 filename = baseDirectory + @"Odd\Image_16_555.bmp"; 125 break; 126 case ImageColorType.Type_16_565: 127 filename = baseDirectory + @"Odd\Image_16_565.bmp"; 128 break; 129 case ImageColorType.Type_24: 130 filename = baseDirectory + @"Odd\Image_24.tif"; 131 break; 132 } 133 break; 134 case ImageType.JPEG: 135 filename = baseDirectory + @"JPEG\Image.jpg"; 136 break; 137 case ImageType.Metadata: 138 filename = baseDirectory + @"Metadata\exif.jpg"; 139 break; 140 case ImageType.Multipaged: 141 filename = baseDirectory + @"Multipaged\Image.tif"; 142 break; 143 } 144 return filename; 145 } 146 GetBitmap(ImageType type, ImageColorType colorType)147 public FreeImageAPI.FIBITMAP GetBitmap(ImageType type, ImageColorType colorType) 148 { 149 FreeImageAPI.FIBITMAP result = new FreeImageAPI.FIBITMAP(); 150 string filename = GetBitmapPath(type, colorType); 151 if (!String.IsNullOrEmpty(filename) && File.Exists(filename)) 152 result = FreeImageAPI.FreeImage.LoadEx(filename); 153 return result; 154 } 155 } 156 }