我正在尝试将一个图像的一部分覆盖在.net core上的另一个图像上(代码需要跨平台(。
我考虑使用ImageSharp,因为它支持win,mac和linux。但是我在他们的功能列表中找不到像素混合,尽管我看到您可以访问单个像素。
所以用例是,我有两个 4k Png 图像,我希望第一个图像的一小部分(大约是整个图像的 10% 正方形(叠加在第二个图像的顶部(但不是整个图像只是相同的 10% 空间(并获取合并发生的区域作为新的 Jpeg 图像。(源 PNG 具有一定程度的透明度(。
我考虑从两个 4k 图像中裁剪出我想合并的两个部分,然后混合它们以获得最终图像,但这对于我正在处理的项目的需求来说很慢。
ImageSharp 确实支持像素混合,您可以在绘制/填充操作期间指定像素混合模式,方法是传入 GraphicsOptions
参数并设置其BlenderMode
和BlendPercentage
(默认为 100%(属性。
目前,ImageSharp具有以下混合模式的实现:
- 正常
- 乘
- 加
- 减去
- 屏幕
- 变暗
- 减轻
- 覆盖
- 硬光
- 来源
- 之上
- 多
- 在
- 外
- 德斯特
- 德斯特阿托普
- 德斯托弗
- 德斯廷
- 德斯特
- 清楚
- 异或