Clipping Path 是一个封闭的矢量路径,用于选择应该可见的图像部分。创建剪切路径后,剪切路径之外的图像部分将变为透明或不可见。在 Adobe Photoshop 中,剪切路径技术最常用于从图像和照片中移除背景。在本文中,您将学习如何使用 C# 以编程方式在 TIFF 图像中创建剪切路径。此外,您将了解如何将 TIFF 图像与剪切路径一起导出为 PSD 格式。

.NET API 用于在 TIFF 中创建剪切路径

Aspose.Imaging for .NET 是一个著名的图像处理 API,允许您处理和使用各种图像格式。此外,API 允许您以编程方式在 TIFF 中创建剪切路径,并使用几行代码将剪切路径从 TIFF 传输到 PSD 图像。您可以使用 NuGet 在您的 .NET 应用程序中安装 API,或从 此处 下载其 DLL。

使用 C# 在 TIFF 图像中创建剪切路径

要在 TIFF 图像中创建剪切路径,您需要在 TXT 文件中定义路径点。您可以手动创建点,也可以使用 Photoshop 中的钢笔工具。以下是一个示例 TXT 文件,其中包含将在以下示例中使用的剪切路径的 Bezier 点。

创建路径点后,您可以将它们插入到 TIFF 图像的路径资源中。下面是示例中使用的目标 TIFF 图像。

示例 TIFF 图像

以下代码示例展示了如何在 Tiff 图像中创建剪切路径。

static void Main()
{
    using (var image = (TiffImage)Image.Load(@"d:\Data\SampleNoPaths.tif"))
    {
        image.ActiveFrame.PathResources = new List<PathResource> { new PathResource
        {
            BlockId = 2000, // Block Id according to Photoshop specification
            Name = "My Path", // Path name
            Records = CreateRecords(LoadPathPoints(@"d:\Data\PathPoints.txt")) // Create path records using coordinates
        }};

        image.Save(@"d:\SampleWithPaths.tif");
    }
}

private static float[] LoadPathPoints(string filePath)
{
    return File.ReadAllText(filePath)
           .Split(new[] { " ", "\r\n" }, StringSplitOptions.RemoveEmptyEntries)
           .Select(float.Parse)
           .ToArray();
}

private static List<VectorPathRecord> CreateRecords(params float[] coordinates)
{
    var records = CreateBezierRecords(coordinates); // Create Bezier records using coordinates

    records.Insert(0, new LengthRecord // LengthRecord required by Photoshop specification
    {
        IsOpen = false, // Lets create closed path
        RecordCount = (ushort)records.Count // Record count in the path
    });

    return records;
}

private static List<VectorPathRecord> CreateBezierRecords(float[] coordinates)
{
    return CoordinatesToPoints(coordinates)
           .Select(CreateBezierRecord)
           .ToList();
}

private static IEnumerable<PointF> CoordinatesToPoints(float[] coordinates)
{
   for (var index = 0; index < coordinates.Length; index += 2)
         yield return new PointF(coordinates[index], coordinates[index + 1]);
}

private static VectorPathRecord CreateBezierRecord(PointF point)
{
    return new BezierKnotRecord { PathPoints = new[] { point, point, point } };
}

以下是生成的 TIFF 图像的屏幕截图以及 Photoshop 中的剪切路径。

带有剪切路径的 TIFF

使用 C# 将带有剪切路径的 TIFF 导出到 PSD

您还可以将具有剪切路径的 TIFF 图像导出为 PSD 图像,以便在 Photoshop 中进行进一步处理。这可以在几行代码中完成。

以下代码示例演示如何使用 C# 将具有剪切路径的 TIFF 图像导出到 PSD。

using (var image = Image.Load(@"d:\Data\SampleWithPaths.tif"))
{
    image.Save(@"d:\Data\SampleWithPaths.psd", new PsdOptions());
}

PSD文件

带有剪切路径的 TIFF 到 PSD

结论

在本文中,您了解了如何使用 C# 以编程方式在 TIFF 图像中创建剪切路径。此外,您还学习了如何使用 Aspose.Imaging for .NET API 将 TIFF 图像连同剪切路径一起导出到 PSD。您可以使用 文档 探索有关 Aspose 图像处理 API 的更多信息。

也可以看看