Files
2023-10-12 16:07:14 +11:00

47 lines
1.4 KiB
C#

using System;
using System.Drawing;
using System.IO;
namespace Disco.Services.Expressions.Extensions.ImageResultImplementations
{
public class FileImageExpressionResult : BaseImageExpressionResult
{
public string AbsoluteFilePath { get; set; }
public FileImageExpressionResult(string AbsoluteFilePath)
{
if (string.IsNullOrWhiteSpace(AbsoluteFilePath))
throw new ArgumentNullException("AbsoluteFilePath");
if (!File.Exists(AbsoluteFilePath))
throw new FileNotFoundException("Image not found", AbsoluteFilePath);
this.AbsoluteFilePath = AbsoluteFilePath;
}
public override MemoryStream GetImage(int width, int height)
{
using (var sourceImage = Image.FromFile(AbsoluteFilePath))
{
return RenderBitmapImage(sourceImage, width, height);
}
}
public override MemoryStream GetImage(out int width, out int height)
{
var stream = new MemoryStream();
using (var fileStream = File.OpenRead(AbsoluteFilePath))
fileStream.CopyTo(stream);
stream.Position = 0;
using (var sourceImage = Image.FromStream(stream))
{
width = sourceImage.Width;
height = sourceImage.Height;
}
stream.Position = 0;
return stream;
}
}
}