0

我想在.net核心上的另一个图像上覆盖一个图像的一部分(代码需要跨平台)。在.net核心上混合像素

我考虑过使用ImageSharp,因为它支持win,mac和linux。 但我无法找到他们的功能列表上的像素混合,但我看到你可以访问一个单独的像素。

所以用例会是,我有两个4k Png图像,我想要第一个图像的一小部分(大概是整个图像的10%的平方)重叠在第二个图像的顶部(但不是整个图像只有相同的10%空间),并获取合并发生的区域作为新的Jpeg图像。 (源PNG具有一定程度的透明度)。

我认为从两个4k图像合并两部分然后混合它们以获得最终图像,但这对于我正在进行的项目的需求来说很慢。

回答

2

ImageSharp确实支持像素混合,可以绘制期间指定像素混合模式/通过使在GraphicsOptions参数并设置其BlenderModeBlendPercentage(默认为100%)的属性填充操作。

目前ImageSharp具有以下混合模式实现:

  • 正常
  • 添加
  • 。减去
  • 屏幕
  • 变暗
  • 变浅
  • 覆盖
  • HARDLIGHT
  • 的Src
  • 顶上
  • 目的地
  • DestAtop
  • DestOver
  • 德斯坦
  • DestOut
  • 清除
  • 异或
+0

嗨@tocsoft我看到那些操作,但我只设法做图像“混合”作为一个整体,我想使用的像素从2幅图像(一小部分)并保存到一个新的图像。 性能对我来说很重要,这就是为什么我不想混合所需的像素而不是整个图像。 我认为你们有内部使用的混合方法。 如果你可以给我看一个混合单个像素的例子,那真是太棒了。感谢您的帮助和您在ImageSharp –

+1

上的努力,您可以使用'DrawImage()'api代替混合文件,它只会让您执行部分图像。 – tocsoft