クリッピングパスは、表示する画像の一部を選択するために使用される閉じたベクトルパスです。クリッピングパスが作成されると、クリッピングパスの外側の画像の部分が透明または非表示になります。 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 } };
}

以下は、Photoshopでのクリッピングパスとともに結果のTIFF画像のスクリーンショットです。

クリッピングパスを使用した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の詳細を調べることができます。

関連項目