【问题标题】:Cropping images in C# properly and scaling it up to 1024 x 768 resolution在 C# 中正确裁剪图像并将其缩放到 1024 x 768 分辨率
【发布时间】: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 好的,我确实像你说的那样,但裁剪区域与我选择的位置相去甚远。一秒钟后我会发布一张裁剪后的图片
  • 任何人,伙计们???
  • 使用target.Save 对我有用。你的输入值是多少?我正在使用X1 = 268, Y1 = 240, W1 = 587, H1 = 457

标签: c# asp.net image webforms crop


【解决方案1】:

当您想调用 target.Save 时,您似乎在调用 src.Save。

【讨论】:

  • 好吧,我确实像你说的那样,但裁剪区域与我选择的位置相去甚远。一秒钟后我会发布一张裁剪后的图片
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多