当我有以下内容时,我想将图像裁剪为5 / 3.5的比例:
这是一张显示我的意思的图片:
突出显示的位是我的。
如何在我的MVC控制器中使用C#实现这一目标?我还希望将图像存储回原始位置,如果可能,覆盖旧图像。
答案 0 :(得分:1)
即使不推荐使用,也可以在asp.net中使用System.Drawing
。
从我所知,你需要一个带有以下签名的功能
public static void CropAndOverwrite(string imgPath,int x1, int y1, int height, int width)
任务相当简单
public static void CropAndOverwrite(string imgPath, int x1, int y1, int height, int width)
{
//Create a rectanagle to represent the cropping area
Rectangle rect = new Rectangle(x1, y1, width, height);
//see if path if relative, if so set it to the full path
if (imgPath.StartsWith("~"))
{
//Server.MapPath will return the full path
imgPath = Server.MapPath(imgPath);
}
//Load the original image
Bitmap bMap = new Bitmap(imgPath);
//The format of the target image which we will use as a parameter to the Save method
var format = bMap.RawFormat;
//Draw the cropped part to a new Bitmap
var croppedImage = bMap.Clone(rect, bMap.PixelFormat);
//Dispose the original image since we don't need it any more
bMap.Dispose();
//Remove the original image because the Save function will throw an exception and won't Overwrite by default
if (System.IO.File.Exists(imgPath))
System.IO.File.Delete(imgPath);
//Save the result in the format of the original image
croppedImage.Save(imgPath,format);
//Dispose the result since we saved it
croppedImage.Dispose();
}