PathResources

TiffFrame.PathResources property

Obtient ou définit les ressources de chemin.

public List<PathResource> PathResources { get; set; }

Valeur de la propriété

Les ressources du chemin.

Exemples

Transférez les chemins de détourage lors de l’exportation d’une image TIFF vers une image PSD.

[C#]

using (var image = Image.Load("Sample.tif"))
{
    image.Save("SampleWithPaths.psd", new PsdOptions());
}

L’exemple suivant montre comment récupérer des chemins à partir d’une image TIFF et afficher leurs noms dans la console.

[C#]

using (var image = (TiffImage)Image.Load("Sample.tif"))
{
    foreach (var path in image.ActiveFrame.PathResources)
    {
        Console.WriteLine(path.Name);
    }
}

L’exemple suivant montre comment modifier des chemins de détourage déjà existants. Par exemple, vous ne pouvez conserver qu’un seul chemin de détourage dans l’image.

[C#]

using (var image = (TiffImage)Image.Load("Sample.tif"))
{
    var paths = image.ActiveFrame.PathResources;
    image.ActiveFrame.PathResources = paths.Take(1).ToList();
    image.Save();
}

L’exemple suivant montre comment créer un chemin de détourage dans une image TIFF. Pour ce faire, vous devez créer une instance de la classe PathResource. Le code suivant montre comment créer un chemin vide dans une image TIFF.

[C#]

var options = new TiffOptions(TiffExpectedFormat.Default);
var frame = new TiffFrame(options, 800, 600);

using (var image = new TiffImage(frame))
{
    image.ActiveFrame.PathResources = new List<PathResource>
    {
        new PathResource
        {
            BlockId = 2000,
            Name = "My Clipping Path",
            Records = new List<VectorPathRecord>()
        }
    };

    image.Save("ImageWithEmptyPath.tiff");
}

Créez manuellement un chemin de détourage.

[C#]

static void Main()
{
    using (var image = (TiffImage)Image.Load("Sample.tif"))
    {
        image.ActiveFrame.PathResources = new List<PathResource> { new PathResource
        {
            BlockId = 2000,                                                          // Id de bloc selon les spécifications de Photoshop
            Name = "My Clipping Path",                                               // Nom du chemin
            Records = CreateRecords(0.2f, 0.2f, 0.8f, 0.2f, 0.8f, 0.8f, 0.2f, 0.8f)  // Créer des enregistrements de chemin à l'aide de coordonnées
        }};

        image.Save("ImageWithPath.tif");
    }
}

private static List<VectorPathRecord> CreateRecords(params float[] coordinates)
{
    var records = CreateBezierRecords(coordinates);                                  // Crée des enregistrements de Bézier à l'aide de coordonnées

    records.Insert(0, new LengthRecord                                               // LengthRecord requis par la spécification Photoshop
    {
        IsOpen = false,                                                              // Permet de créer un chemin fermé
        RecordCount = (ushort)records.Count                                          // Nombre d'enregistrements dans le chemin
    });

    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 } };
}

Voir également