Files
Umbraco-CMS/components/editorControls/imagecropper/ImageInfo.cs
kenny ec5c1b79c7 DO NOT DOWNLOAD. DOWNLOAD LATEST STABLE FROM RELEASE TAB
Added Image Cropper datatype

[TFS Changeset #55169]
2009-06-20 13:49:35 +00:00

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.");
}
}
}
}
}