106 lines
3.4 KiB
C#
106 lines
3.4 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Web;
|
|
using umbraco.editorControls.imagecropper;
|
|
|
|
namespace umbraco.editorControls.imagecropper
|
|
{
|
|
public class ImageInfo
|
|
{
|
|
public Image image { get; set; }
|
|
public string Name { get; set; }
|
|
public int Width { get; set; }
|
|
public int Height { get; set; }
|
|
public float Aspect { get; set; }
|
|
public DateTime DateStamp { get; set; }
|
|
public string Path { get; set; }
|
|
public string RelativePath { get; set; }
|
|
|
|
public ImageInfo(string relativePath)
|
|
{
|
|
RelativePath = relativePath;
|
|
Path = HttpContext.Current.Server.MapPath(relativePath);
|
|
if (File.Exists(Path))
|
|
{
|
|
string fileName = Path.Substring(Path.LastIndexOf('\\') + 1);
|
|
Name = fileName.Substring(0, fileName.LastIndexOf('.'));
|
|
|
|
byte[] buffer = null;
|
|
|
|
using (FileStream fs = new FileStream(Path, FileMode.Open, FileAccess.Read))
|
|
{
|
|
buffer = new byte[fs.Length];
|
|
fs.Read(buffer, 0, (int) fs.Length);
|
|
fs.Close();
|
|
}
|
|
|
|
try
|
|
{
|
|
image = Image.FromStream(new MemoryStream(buffer));
|
|
|
|
Width = image.Width;
|
|
Height = image.Height;
|
|
Aspect = (float) Width/Height;
|
|
DateStamp = File.GetLastWriteTime(Path);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
Width = 0;
|
|
Height = 0;
|
|
Aspect = 0;
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
Width = 0;
|
|
Height = 0;
|
|
Aspect = 0;
|
|
}
|
|
}
|
|
|
|
public bool Exists
|
|
{
|
|
get { return Width > 0 && Height > 0; }
|
|
}
|
|
|
|
public string Directory
|
|
{
|
|
get { return Path.Substring(0, Path.LastIndexOf('\\')); }
|
|
}
|
|
|
|
public void GenerateThumbnails(SaveData saveData, Config config)
|
|
{
|
|
if (config.GenerateImages)
|
|
{
|
|
for (int i = 0; i < config.presets.Count; i++)
|
|
{
|
|
Crop crop = (Crop) saveData.data[i];
|
|
Preset preset = (Preset) config.presets[i];
|
|
|
|
// Crop rectangle bigger than actual image
|
|
if(crop.X2 - crop.X > Width || crop.Y2 - crop.Y > Height)
|
|
{
|
|
crop = preset.Fit(this);
|
|
}
|
|
|
|
ImageTransform.Execute(
|
|
Path,
|
|
String.Format("{0}_{1}", Name, preset.Name),
|
|
crop.X,
|
|
crop.Y,
|
|
crop.X2 - crop.X,
|
|
crop.Y2 - crop.Y,
|
|
preset.TargetWidth,
|
|
preset.TargetHeight,
|
|
config.Quality
|
|
);
|
|
//BasePage bp = new BasePage();
|
|
//bp.speechBubble(BasePage.speechBubbleIcon.error, "Error",
|
|
// "One or more crops are out of bounds. Please correct and try again.");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |