You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#使用ImageSharp库实现图片垂直翻转的方法

ImageSharp 垂直翻转实现方案

由于Y轴方向倒置需要垂直翻转图片的效果参考如下:
垂直翻转效果参考

你可以直接调用ImageSharp内置的FlipExtensions提供的API实现需求,不需要手动处理像素转换。

FlipMode 枚举说明

两个枚举值分别对应不同翻转效果:

  • FlipMode.Vertical:沿水平中轴线做上下翻转,就是你需要的垂直翻转效果,刚好可以修正Y轴倒置问题
  • FlipMode.Horizontal:沿垂直中轴线做左右镜像翻转

代码修改方式

你只需要在Mutate的方法调用链中追加.Flip(FlipMode.Vertical)即可,推荐在完成所有背景、图形绘制之后再调用翻转,不需要额外调整原有路径绘制的坐标逻辑。
另外注意你原有代码里的path.AsClosedPath()写法有问题:这个方法不会修改原路径对象,会返回一个新的闭合路径实例,必须用变量接收返回值,否则填充时路径还是未闭合状态,可能出现渲染异常。

修改后的完整代码如下:

using (MemoryStream outStream = new MemoryStream())
{
  using (Image img = new Image<Rgba32>(width, height))
  {
     PathBuilder pb = drawPath(); // 绘制所有路径内容

     IPath path = pb.Build();
     // 接收AsClosedPath返回的闭合路径实例
     path = path.AsClosedPath();

     img.Mutate(imageContext => imageContext
       .BackgroundColor(Color.Black)
       .Fill(Color.Yellow, path)
       // 追加垂直翻转操作
       .Flip(FlipMode.Vertical)
     );

     img.SaveAsPng(outStream);
  }
  
  return File(outStream.ToArray(), "image/png");
}

如果你后续所有绘制逻辑都要适配倒置Y轴,也可以把.Flip(FlipMode.Vertical)放到Mutate调用链的最开头,之后所有绘图操作都会基于翻转后的画布坐标系计算,不需要每次绘制完成后再翻转。

内容的提问来源于stack exchange,提问作者Walle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 10:09:14