This is just an idea.
1. you can dump/save the images into the temporary folder and link those images into the repeater control. the repeater control has image template. if you worry about the temporary images, you can create cronjob to delete.
2. if you don't want to save the images in the temp folder. you can also convert/encode the images into base64 string and embed those base64 into the html. try to search in google "base 64 images in html".
3. you can also create a large image which I don't recommend, and draw each image vertically.
I usually use the 1st method. if you have a problem with the cronjob, you can also use the OnRemoveCallback of CacheItem to delete the temporary images. sample code below.
protected void Page_Load(object sender, EventArgs e)
{
string tempFilePath = "C:\\Imagepath\\image1.jpg";
DeleteFile(tempFilePath);
}
private void DeleteFile(string fileName)
{
HttpContext.Current.Cache.Add(fileName, fileName, null,
DateTime.Now.AddMinutes(5),
Cache.NoSlidingExpiration,
CacheItemPriority.Normal,
(key, value, reason) =>
{
try
{
File.Delete(Convert.ToString(value));
}
catch { }
});
}