Clipping Path 是一個封閉的矢量路徑,用於選擇圖像中應該可見的部分。創建剪切路徑後,剪切路徑之外的圖像部分將變為透明或不可見。在 Adobe Photoshop 中,剪切路徑技術最常用於從圖像和照片中刪除背景。在本文中,您將學習如何使用 C# 以編程方式在 TIFF 圖像中創建剪切路徑。此外,您將了解如何將 TIFF 圖像連同剪切路徑一起導出為 PSD 格式。

用於在 TIFF 中創建剪切路徑的 .NET API

Aspose.Imaging for .NET 是一個著名的圖像處理 API,它允許您處理和使用各種圖像格式。此外,API 允許您以編程方式在 TIFF 中創建剪切路徑,並使用幾行代碼將剪切路徑從 TIFF 傳輸到 PSD 圖像。您可以使用 NuGet 在您的 .NET 應用程序中安裝 API,或從 此處 下載其 DLL。

使用 C# 在 TIFF 圖像中創建剪切路徑

要在 TIFF 圖像中創建剪切路徑,您需要在 TXT 文件中定義路徑的點。您可以手動創建點或使用 Photoshop 中的鋼筆工具。以下是包含將在以下示例中使用的剪切路徑的貝塞爾點的示例 TXT 文件。

創建路徑點後,您可以將它們插入到 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());
}

文件

TIFF 到 PSD 與剪切路徑

結論

在本文中,您了解瞭如何使用 C# 以編程方式在 TIFF 圖像中創建剪切路徑。此外,您還學習瞭如何使用 Aspose.Imaging for .NET API 將 TIFF 圖像連同剪切路徑一起導出到 PSD。您可以使用 文檔 探索更多關於 Aspose 的圖像處理 API。

也可以看看