47 lines
1.4 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|