string dataDir = RunExamples.GetDataDir_MetaFiles();
      
      
      }
#region Constants
//Please Update path int constant SourceFolder.
private const string ImageFolderName = "Images";
private const string OutFolderName = "Out";
private const string SourceFolder = @"D:\ImageTests";
 
private static readonly string OutFolder = Path.Combine(SourceFolder, OutFolderName);
private static readonly string ImageFolder = Path.Combine(OutFolder, ImageFolderName);
 
#endregion
 
#region Methods
 
 
public void SaveWithEmbeddedImages()
  {
string[] files = new string[1] { "auto.svg" };
for (int i = 0; i < files.Length; i++)
  {
this.Save(true, files[i], null);
  }
  }
 
public void SaveWithExportImages()
{
string[] files = new string[1] { "auto.svg" };
string[][] expectedImages = new string[1][]
{ 
new string[16]
{
"svg_img1.png", "svg_img10.png", "svg_img11.png","svg_img12.png",
"svg_img13.png", "svg_img14.png", "svg_img15.png", "svg_img16.png",
"svg_img2.png", "svg_img3.png", "svg_img4.png", "svg_img5.png",
"svg_img6.png","svg_img7.png", "svg_img8.png", "svg_img9.png"
  },
  };
 
for (int i = 0; i < files.Length; i++)
{
this.Save(false, files[i], expectedImages[i]);
  }
  }
 
 
private void Save(bool useEmbedded, string fileName, string[] expectedImages)
 {
if (!Directory.Exists(OutFolder))
 {
Directory.CreateDirectory(OutFolder);
}
 
string storeType = useEmbedded ? "Embedded" : "Stream";
string inputFile = Path.Combine(SourceFolder, fileName);
string outFileName = Path.GetFileNameWithoutExtension(fileName) + "_" + storeType + ".svg";
string outputFile = Path.Combine(OutFolder, outFileName);
string imageFolder = string.Empty;
using (Image image = Image.Load(inputFile))
{
EmfRasterizationOptions emfRasterizationOptions = new EmfRasterizationOptions();
emfRasterizationOptions.BackgroundColor = Color.White;
emfRasterizationOptions.PageWidth = image.Width;
emfRasterizationOptions.PageHeight = image.Height;
string testingFileName = Path.GetFileNameWithoutExtension(inputFile);
imageFolder = Path.Combine(ImageFolder, testingFileName);
image.Save(outputFile,
new SvgOptions
{
VectorRasterizationOptions = emfRasterizationOptions,
Callback =
new SvgCallbackImageTest(useEmbedded, imageFolder)
{
Link = ImageFolderName + "/" + testingFileName
}
});
}
 
if (!useEmbedded)
{
string[] files = Directory.GetFiles(imageFolder);
if (files.Length != expectedImages.Length)
{
throw new Exception(string.Format("Expected count font files = {0}, Current count image files = {1}", expectedImages.Length, files.Length));
}
 
for (int i = 0; i < files.Length; i++)
{
string file = Path.GetFileName(files[i]);
if (string.IsNullOrEmpty(file))
{
throw new Exception(string.Format("Expected file name: '{0}', current is empty", expectedImages[i]));
}
 
if (file.ToLower() != expectedImages[i])
{
throw new Exception(string.Format("Expected file name: '{0}', current: '{1}'", expectedImages[i], file.ToLower()));
}
}
}
}
 
#endregion
 
private class SvgCallbackImageTest : FileFormats.Svg.SvgResourceKeeperCallback
		{
#region Fields
 
/// <summary>
/// The out folder
/// </summary>
private readonly string outFolder;
 
/// <summary>
/// The use embedded font
/// </summary>
private readonly bool useEmbeddedImage;
 
#endregion
 
#region Constructors
 
/// <summary>
/// Initializes a new instance of the <see cref="SvgTests.SvgCallbackFontTest" /> class.
/// </summary>
/// <param name="useEbeddedImage">if set to <c>true</c> [use ebedded image].</param>
/// <param name="outFolder">The out folder.</param>
public SvgCallbackImageTest(bool useEbeddedImage, string outFolder)
{
this.useEmbeddedImage = useEbeddedImage;
this.outFolder = outFolder;
}
 
#endregion
 
#region Properties
 
public string Link { get; set; }
 
#endregion
 
#region Methods
 
/// <summary>
/// Called when image resource ready.
/// </summary>
/// <param name="imageData">The resource data.</param>
/// <param name="imageType">Type of the image.</param>
/// <param name="suggestedFileName">Name of the suggested file.</param>
/// <param name="useEmbeddedImage">if set to <c>true</c> the embedded image must be used.</param>
/// <returns>
/// Returns path to saved resource. Path should be relative to target SVG document.
/// </returns>
public override string OnImageResourceReady(byte[] imageData, SvgImageType imageType, string suggestedFileName, ref bool useEmbeddedImage)
{
useEmbeddedImage = this.useEmbeddedImage;
 
if (useEmbeddedImage)
{
return suggestedFileName;
}
 
string fontFolder = this.outFolder;
if (!Directory.Exists(fontFolder))
{
Directory.CreateDirectory(fontFolder);
}
 
string fileName = fontFolder + @"\" + Path.GetFileName(suggestedFileName);
 
using (FileStream fs = new FileStream(fileName, FileMode.Create))
{
fs.Write(imageData, 0, imageData.Length);
}
 
return @"./" + this.Link + "/" + suggestedFileName;
}
 
 
#endregion
}
      }