彩票走势图

PSD文件处理控件Aspose.PSD功能演示:在Photoshop文档中添加填充层

翻译|使用教程|编辑:李显亮|2020-06-10 10:58:58.477|阅读 356 次

概述:用于.NET API的Aspose.PSD提供了许多与PSD,PSB,AI和许多其他文件格式一起使用的功能。让我们探讨以下与在PSD文件中添加图层有关的用例。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

照片是反映信息的一种非常有用的方法。PSD格式文件用于创建图像。但是,可能会出现类似沿同一行编辑多个Photoshop文件的情况。例如,照片处理应用程序可能需要与其他操作一起在多个Photoshop文档中添加一个图层。

用于.NET API的Aspose.PSD提供了许多与PSD,PSB,AI和许多其他文件格式一起使用的功能。让我们探讨以下与在PSD文件中添加图层有关的用例:

  • 使用C#在运行时在PSD文件中添加填充层
  • 使用C#在PSD文件中添加现有填充层
    • 使用图案填充添加图层
    • 使用渐变填充添加图层
    • 使用颜色填充添加图层

Aspose.PSD for .NET已升级至V20.5,如果你还没有用过Aspose.PSD可以点击这里下载最新版测试。


使用C#在运行时在Photoshop文档中添加填充层

用于.NET API的Aspose.PSD支持在PSD文件中创建填充层。您不一定需要从现有文件加载图层。只需按照以下步骤在运行时在PSD文件中添加填充层:

  • 用页面尺寸初始化PsdImage类的实例
  • 创建FillLayer类的实例
  • 设置图层的显示名称
  • 将图层添加到图像

以下代码段显示了如何使用C#在Photoshop中添加填充层:

string outputFilePath = Path.Combine(dataDir, "output.psd");

using (var image = new PsdImage(100, 100))
{
    FillLayer colorFillLayer = FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType.Color);
    colorFillLayer.DisplayName = "Color Fill Layer";
    image.AddLayer(colorFillLayer);

    FillLayer gradientFillLayer = FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType.Gradient);
    gradientFillLayer.DisplayName = "Gradient Fill Layer";
    image.AddLayer(gradientFillLayer);

    FillLayer patternFillLayer = FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType.Pattern);
    patternFillLayer.DisplayName = "Pattern Fill Layer";
    patternFillLayer.Opacity = 50;
    image.AddLayer(patternFillLayer);

    image.Save(outputFilePath);
}

此代码段将生成指定尺寸的PSD文件,其中以下屏幕截图显示了三个填充层的名称,这些名称与上述C#代码所设置的完全相同:

PSD文件处理控件Aspose.PSD功能演示:在Photoshop文档中添加填充层

使用C#在PSD文件中添加现有填充层

让我们看看如何从现有的Photoshop文件中添加图层。以下是添加现有填充层的可能性:

使用C#添加带有图案填充的图层

图案填充可能具有图像,线条或阴影来填充该区域。您需要按照以下步骤在PSD图像中添加带有Patten Fill的图层:

  • 加载源PSD文件
  • 遍历所有图层并检查FillLayer
  • 为图层设置不同的设置
  • 编辑填充层
  • 保存图像

下面的代码段显示了如何使用C#使用模式填充添加填充层:

// Add support of Fill layers: Pattern
string sourceFileName = dataDir + "PatternFillLayer.psd";
string exportPath = dataDir + "PatternFillLayer_Edited.psd";
double tolerance = 0.0001;
var im = (PsdImage)Image.Load(sourceFileName);
using (im)
{
    foreach (var layer in im.Layers)
    {
        if (layer is FillLayer)
        {
            FillLayer fillLayer = (FillLayer)layer;
            PatternFillSettings fillSettings = (PatternFillSettings)fillLayer.FillSettings;
            if (fillSettings.HorizontalOffset != -46 ||
                fillSettings.VerticalOffset != -45 ||
                fillSettings.PatternId != "a6818df2-7532-494e-9615-8fdd6b7f38e5" ||
                fillSettings.PatternName != "$$$/Presets/Patterns/OpticalSquares=Optical Squares" ||
                fillSettings.AlignWithLayer != true ||
                fillSettings.Linked != true ||
                fillSettings.PatternHeight != 64 ||
                fillSettings.PatternWidth != 64 ||
                fillSettings.PatternData.Length != 4096 ||
                Math.Abs(fillSettings.Scale - 50) > tolerance)
            {
                throw new Exception("PSD Image was read wrong");
            }
            // Editing 
            fillSettings.Scale = 300;
            fillSettings.HorizontalOffset = 2;
            fillSettings.VerticalOffset = -20;
            fillSettings.PatternData = new int[]
            {
           Color.Red.ToArgb(), Color.Blue.ToArgb(),  Color.Blue.ToArgb(),
           Color.Blue.ToArgb(), Color.Red.ToArgb(),  Color.Blue.ToArgb(),
           Color.Blue.ToArgb(), Color.Blue.ToArgb(),  Color.Red.ToArgb()
            };
            fillSettings.PatternHeight = 3;
            fillSettings.PatternWidth = 3;
            fillSettings.AlignWithLayer = false;
            fillSettings.Linked = false;
            fillSettings.PatternId = Guid.NewGuid().ToString();
            fillLayer.Update();
            break;
        }
    }
    im.Save(exportPath);
}
使用C#添加带有渐变填充的图层

可以使用渐变填充在Photoshop文档中填充图层。用于.NET API的Aspose.PSD支持以下类型的渐变填充:

  • 线性
  • 菱形
  • 径向
  • 折线

以下是添加带有渐变填充的图层的步骤:

  • 加载源PSD文件
  • 初始化GradientType的集合
  • 声明GradientFillSettings类的实例
  • 指定GradientType并更新图层
  • 保存PSD图像

下面的代码段基于这些步骤,并显示了如何使用C#在Photoshop文档中添加GradientFill层:

string fileName = dataDir + "FillLayerGradient.psd";
GradientType[] gradientTypes = new[]
{
    GradientType.Linear, GradientType.Radial, GradientType.Angle, GradientType.Reflected, GradientType.Diamond
};
using (var image = Image.Load(fileName))
{
    PsdImage psdImage = (PsdImage)image;
    FillLayer fillLayer = (FillLayer)psdImage.Layers[0];
    GradientFillSettings fillSettings = (GradientFillSettings)fillLayer.FillSettings;
    foreach (var gradientType in gradientTypes)
    {
        fillSettings.GradientType = gradientType;
        fillLayer.Update();
        psdImage.Save(fileName + "_" + gradientType.ToString() + ".png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
    }
}

此代码段将生成五个不同的文件,每个文件在PSD文件的层中填充不同的渐变。

使用C#添加带有颜色填充的图层

可以在Photoshop文档(PSD文件)中添加带有颜色填充的图层。请按照以下步骤添加或创建带有颜色填充的填充层:

  • 加载源PSD图像
  • 检查所有图层并找到FillLayer
  • 检查所有图层并找到FillLayer
  • 设置填充颜色并更新图层
  • 保存PSD图像

以下代码段基于上述步骤,这些步骤显示了如何使用C#在Photoshop文档中添加填充层:

string sourceFileName = dataDir + "ColorFillLayer.psd";
string exportPath = dataDir + "ColorFillLayer_output.psd";

var im = (PsdImage)Image.Load(sourceFileName);

using (im)
{
    foreach (var layer in im.Layers)
    {
        if (layer is FillLayer)
        {
            var fillLayer = (FillLayer)layer;

            if (fillLayer.FillSettings.FillType != FillType.Color)
            {
                throw new Exception("Wrong Fill Layer");
            }

            var settings = (IColorFillSettings)fillLayer.FillSettings;

            settings.Color = Color.Red;
            fillLayer.Update();
            im.Save(exportPath);
            break;
        }
    }
}

还想要更多吗?您可以点击阅读
【2019 · Aspose最新资源整合】查找需要的教程资源。如果您有任何疑问或需求,请随时加入Aspose技术交流群(642018183),我们很高兴为您提供查询和咨询

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP