【问题标题】:How can I properly crop part of an image? [duplicate]如何正确裁剪图像的一部分? [复制]
【发布时间】:2019-05-20 21:18:37
【问题描述】:

我正在尝试裁剪图像,但图像未正确裁剪

我用来获取我想要的部分图片的代码是

Bitmap bmap = new Bitmap(pictureBox1.Image, pictureBox1.Width, pictureBox1.Height);
Bitmap cropImg = new Bitmap(cropArea.Width, cropArea.Height);
Graphics g = Graphics.FromImage(cropImg);
g.DrawImage(bmap, 0, 0, cropArea, GraphicsUnit.Pixel);
return cropImg;

我得到的结果很奇怪

作物结果:

裁剪后的图片变得模糊并放大(?)。问题的原因可能是什么?我可以做些什么来摆脱它?

【问题讨论】:

  • 看来代码取自this questioncropArea 是什么?看来您没有正确计算矩形垂直偏移和高度。
  • cropArea 是代表选定区域的矩形
  • 根据大小模式,您必须进行计算以缩放鼠标坐标以适应 pb 大小模式。 Example
  • @TaW 我一直在玩你提供的示例,但仍然无法让裁剪功能正常工作:(imgur.com/a/OCWWlYi裁剪方法代码:imgur.com/a/yVMgaW4
  • pbox 的大小模式是什么?

标签: c#


【解决方案1】:

您可以尝试通过克隆原始图像进行裁剪,但只取原始图像的一个矩形。

private static Image cropImage(Image img, Rectangle cropArea)
{
   Bitmap bmpImage = new Bitmap(img);
   Bitmap bmpCrop = bmpImage.Clone(cropArea,
   bmpImage.PixelFormat);
   return (Image)(bmpCrop);
}

【讨论】:

  • 嗯,现在结果不一样了。图像不再模糊,但仍无法正确裁剪imgur.com/a/m2clOy4
  • @bapster 那是因为cropArea 值你需要做一个匹配所需输出的计算
  • 那我该如何计算呢?你能指定吗?
  • @bapster 你可以看看这个post,看看如何处理纵横比
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-15
相关资源
最近更新 更多