【问题标题】:Blend pixels on .net core在 .net 核心上混合像素
【发布时间】:2017-11-20 10:37:56
【问题描述】:

我正在尝试将一个图像的一部分覆盖在 .net 核心上的另一个图像之上(代码需要跨平台)。

我考虑使用 ImageSharp,因为它支持 win、mac 和 linux。 但是我在他们的功能列表中找不到像素混合,尽管我看到您可以访问单个像素。

所以用例是,我有两个 4k Png 图像,我希望将第一个图像的一小部分(大约 10% 的整个图像的正方形)覆盖在第二个图像的顶部(但不是整个图像图像只是相同的 10% 空间)并获取合并发生的区域作为新的 Jpeg 图像。 (源 PNG 具有一定程度的透明度)。

我考虑从两张 4k 图像中裁剪出我想要合并的两个部分,然后将它们混合以获得最终图像,但这对于我正在处理的项目的需求来说很慢。

【问题讨论】:

    标签: asp.net-core image-manipulation alphablending color-blending


    【解决方案1】:

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

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

    • 正常
    • 相乘
    • 添加
    • 减法
    • 屏幕
    • 变暗
    • 变亮
    • 叠加层
    • 硬光
    • 结束
    • 出局
    • 目的地
    • 目的地
    • DestOver
    • 目的地
    • 目标输出
    • 清除
    • 异或

    【讨论】:

    • 嗨@tocsoft 我看到了这些操作,但我只设法对整个图像进行“混合”,我想使用来自 2 个图像(一个小子集)的像素并保存到一个新图像.性能对我来说很重要,这就是为什么我不想只混合所需的像素而不是整个图像。|我认为你们有一种内部使用的混合方法。如果你能给我看一个混合单个像素的例子,那真是太棒了。感谢您在 ImageSharp 上的帮助和努力
    • 您可以使用DrawImage() api 代替混合API,它只会让您只处理部分图像。
    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-13
    • 2017-10-23
    • 1970-01-01
    相关资源
    最近更新 更多