PathResources

TiffFrame.PathResources property

الحصول على موارد المسار أو تعيينها .

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

Property_Value

موارد المسار .

أمثلة

انقل مسارات القطع أثناء التصدير من TIFF إلى صورة PSD.

[C#]

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

يوضح المثال التالي كيفية استرداد المسارات من صورة TIFF وعرض أسمائها في وحدة التحكم.

[C#]

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

يوضح المثال التالي كيفية تعديل مسارات القطع الموجودة بالفعل. على سبيل المثال ، يمكنك الاحتفاظ بمسار قص واحد فقط في الصورة.

[C#]

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

يوضح المثال التالي كيفية إنشاء مسار القطع في صورة TIFF. للقيام بذلك ، تحتاج إلى إنشاء مثيل لفئة PathResource. يوضح الكود التالي الطريقة التي يمكنك من خلالها إنشاء مسار فارغ في صورة 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");
}

قم بإنشاء مسار القطع يدويًا.

[C#]

static void Main()
{
    using (var image = (TiffImage)Image.Load("Sample.tif"))
    {
        image.ActiveFrame.PathResources = new List<PathResource> { new PathResource
        {
            BlockId = 2000,                                                          // Block Id وفقًا لمواصفات Photoshop
            Name = "My Clipping Path",                                               // اسم المسار
            Records = CreateRecords(0.2f, 0.2f, 0.8f, 0.2f, 0.8f, 0.8f, 0.2f, 0.8f)  // إنشاء سجلات المسار باستخدام الإحداثيات
        }};

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

private static List<VectorPathRecord> CreateRecords(params float[] coordinates)
{
    var records = CreateBezierRecords(coordinates);                                  // إنشاء سجلات بيزير باستخدام الإحداثيات

    records.Insert(0, new LengthRecord                                               // LengthRecord مطلوبة بمواصفات Photoshop
    {
        IsOpen = false,                                                              // يتيح إنشاء مسار مغلق
        RecordCount = (ushort)records.Count                                          // سجل العد في المسار
    });

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

أنظر أيضا