在 C# 中正确裁剪图像并将其缩放到 1024 x 768 分辨率
Posted
技术标签:
【中文标题】在 C# 中正确裁剪图像并将其缩放到 1024 x 768 分辨率【英文标题】:Cropping images in C# properly and scaling it up to 1024 x 768 resolution 【发布时间】:2016-12-29 19:17:04 【问题描述】:我在 .NET 应用程序中设置了一个功能,我将 4 个值传递给后面的代码,如下所示:
X1 - X axis value
Y1 - Y axis value
W1 - selected width
H1 - Represents the selected height of the image
我正在尝试实现一个功能,使我能够像以下那样进行裁剪。例如,这是输入图像:
所需的输出如下所示:
红色矩形代表裁剪区域。
我正在使用如下代码:
Rectangle cropRect = new Rectangle(Convert.ToInt32(X1.Value), Convert.ToInt32(Y1.Value), Convert.ToInt32(W1.Value), Convert.ToInt32(H1.Value));
Bitmap src = System.Drawing.Image.FromStream(FileUpload1.PostedFile.InputStream) as Bitmap;
Bitmap target = new Bitmap(cropRect.Width, cropRect.Height);
using (Graphics g = Graphics.FromImage(target))
g.DrawImage(src, new Rectangle(0, 0, target.Width, target.Height),
cropRect,
GraphicsUnit.Pixel);
src.Save(Server.MapPath("/users/images/") + fileName);
但这对图像没有任何作用,它只是保存我首先上传的内容......我在这里做错了什么?
编辑:这就是使用 targer.Save();
这远不是我想要的:/
【问题讨论】:
你不应该做target.Save()
而不是src.Save()
吗?此外,您可能需要将target.Save()
移出using (Graphics g...)
语句。
@dbc 好的,我确实像你说的那样,但裁剪区域与我选择的位置相去甚远。一秒钟后我会发布一张裁剪后的图片
任何人,伙计们???
这样的? ***.com/questions/8992619/…
使用target.Save
对我有用。你的输入值是多少?我正在使用X1 = 268, Y1 = 240, W1 = 587, H1 = 457
。
【参考方案1】:
当您想调用 target.Save 时,您似乎在调用 src.Save。
【讨论】:
好吧,我确实像你说的那样,但裁剪区域与我选择的位置相去甚远。一秒钟后我会发布一张裁剪后的图片以上是关于在 C# 中正确裁剪图像并将其缩放到 1024 x 768 分辨率的主要内容,如果未能解决你的问题,请参考以下文章
PictureBox处于“缩放”模式时裁剪图像的正确部分[重复]