Dolgu Katmanlarının Desteği

Desen Dolgusu ile Dolgu Katmanları

Bu makale, PSD katmanını Desen dolgusu ile doldurmanın nasıl yapıldığını göstermektedir. Bir Desen* * bir resmi, rengi, gölgeyi veya çizgiyi bir resmin alanını doldurmada kullanılan bir ögedir. Lütfen Aspose.PSD. FileFormats.Psd.Layers.FillLayer’ı kullanarak PSD katmanına Desen eklemek için PatternFillSettings özelliklerini ayarlayın.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// 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);
}

İşte Aspose.PSDnin FillLayer ve IPatternFillSettings kullanarak deseni nasıl renderlediğini gösteren başka bir örnek.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string destName = dataDir + "PatternFillLayer_out.psd";
// Load an existing image into an instance of PsdImage class
using (var image = (PsdImage)Image.Load(sourceFile))
{
foreach (var layer in image.Layers)
{
if (layer is FillLayer)
{
var fillLayer = (FillLayer)layer;
var settings = (IPatternFillSettings)fillLayer.FillSettings;
settings.HorizontalOffset = -5;
settings.VerticalOffset = 12;
settings.Scale = 300;
settings.Linked = true;
settings.PatternData = new int[]
{
Color.Black.ToArgb(), Color.Red.ToArgb(),
Color.Green.ToArgb(), Color.Blue.ToArgb(),
Color.White.ToArgb(), Color.AliceBlue.ToArgb(),
Color.Violet.ToArgb(), Color.Chocolate.ToArgb(),
Color.IndianRed.ToArgb(), Color.DarkOliveGreen.ToArgb(),
Color.CadetBlue.ToArgb(), Color.YellowGreen.ToArgb(),
Color.Black.ToArgb(), Color.Azure.ToArgb(),
Color.ForestGreen.ToArgb(), Color.Sienna.ToArgb(),
};
settings.PatternHeight = 4;
settings.PatternWidth = 4;
settings.PatternName = "$$$/Presets/Patterns/ColorfulSquare=Colorful Square New\0";
settings.PatternId = Guid.NewGuid().ToString() + "\0";
fillLayer.Update();
break;
}
}
image.Save(destName, new PsdOptions(image));
}

Gradyan Dolgusu ile Dolgu Katmanları

Bu makale, PSD katmanını doldurmak için Gradyan dolgusunun kullanımını göstermektedir. Aspose.PSD API’leri, bu hedefe ulaşmak için verimli ve kullanımı kolay yöntemler sunmuştur. Aspose.PSD, bir katmana Gradyan efekti eklemek için GradientColorPoint ve GradientTransparencyPoint sınıflarını açıklamıştır.

`PSD katmanını Gradyan dolgusuyla doldurmanın adımları aşağıdaki kadar basittir:

  • Yükle yöntemi ile bir görüntü olarak PSD dosyasını yükleyin. Image sınıfı tarafından sağlanan fabrika yöntemi ile.
  • FillLayer nesnesinin ayarlar özelliklerini ayarlayın.
  • Gerekli renkler ve renk pozisyonlarını içeren bir ColorPoints listesi oluşturun.
  • Gerekli opaklık ve şeffaflık noktası pozisyonlarını içeren bir şeffaflık noktaları listesi oluşturun.
  • FillLayer.Update yöntemini çağırın
  • Sonuçları kaydedin.

Aşağıdaki kod parçası, PSD katmanına Gradyan doldurmayı nasıl ekleyeceğinizi gösterir.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir_PSD();
string sourceFileName = dataDir + "ComplexGradientFillLayer.psd";
string outputFile = dataDir + "ComplexGradientFillLayer_output.psd";
var image = (PsdImage)Image.Load(sourceFileName);
using (image)
{
foreach (var layer in image.Layers)
{
if (layer is FillLayer)
{
var fillLayer = (FillLayer)layer;
if (fillLayer.FillSettings.FillType != FillType.Gradient)
{
throw new Exception("Wrong Fill Layer");
}
var settings = (IGradientFillSettings)fillLayer.FillSettings;
if (
Math.Abs(settings.Angle - 45) > 0.25 ||
settings.Dither != true ||
settings.AlignWithLayer != false ||
settings.Reverse != false ||
Math.Abs(settings.HorizontalOffset - (-39)) > 0.25 ||
Math.Abs(settings.VerticalOffset - (-5)) > 0.25 ||
settings.TransparencyPoints.Length != 3 ||
settings.ColorPoints.Length != 2 ||
Math.Abs(100.0 - settings.TransparencyPoints[0].Opacity) > 0.25 ||
settings.TransparencyPoints[0].Location != 0 ||
settings.TransparencyPoints[0].MedianPointLocation != 50 ||
settings.ColorPoints[0].Color != Color.FromArgb(203, 64, 140) ||
settings.ColorPoints[0].Location != 0 ||
settings.ColorPoints[0].MedianPointLocation != 50)
{
throw new Exception("Gradient Fill was not read correctly");
}
settings.Angle = 0.0;
settings.Dither = false;
settings.AlignWithLayer = true;
settings.Reverse = true;
settings.HorizontalOffset = 25;
settings.VerticalOffset = -15;
var colorPoints = new List<IGradientColorPoint>(settings.ColorPoints);
var transparencyPoints = new List<IGradientTransparencyPoint>(settings.TransparencyPoints);
colorPoints.Add(new GradientColorPoint()
{
Color = Color.Violet,
Location = 4096,
MedianPointLocation = 75
});
colorPoints[1].Location = 3000;
transparencyPoints.Add(new GradientTransparencyPoint()
{
Opacity = 80.0,
Location = 4096,
MedianPointLocation = 25
});
transparencyPoints[2].Location = 3000;
settings.ColorPoints = colorPoints.ToArray();
settings.TransparencyPoints = transparencyPoints.ToArray();
fillLayer.Update();
image.Save(outputFile, new PsdOptions(image));
break;
}
}
}

Aspose.PSD’nin PSD katmanını Gradyan dolgusu kullanarak doldurmak için GradientFillSettings.GradientType özelliğini kullanan başka bir örnek. Aspose.PSD, GradientType numaralaması aracılığıyla aşağıdaki gradiyan türlerini destekler:

  • GradientType.Linear:       Doğrusal gradiyanda, renk başlangıç renginden son renge doğru düz bir çizgide geçiş yapar.
  • GradientType.Radial:       Yarıçaplı gradiyanda, renkler başlangıç noktasından dairesel bir desende yayılır.
  • GradientType.Angle:        Açılı gradiyanda, renk başlangıç noktasının çevresinde saat yönünün tersine doğru döner.
  • GradientType.Reflected: Yansımalı gradiyanda, renk başlangıç noktasının her iki tarafında yansıtılır.
  • GradientType.Diamond:   Elmas gradiyan, başlangıç noktasından elmas şeklinde bir desen oluşturur.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
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 });
}
}

Gradyan Dolgu Katmanı için Ölçek Özelliği Desteği

Bu makale, Aspose.PSD ile .NET için Gradyan dolgulu FillLayer’ı ölçeklendirmenin nasıl yapıldığını göstermektedir. Bu amaçla, IGradientFillSettings içinde yeni bir Scale özelliği eklenmiştir.

Aşağıdaki kod, Scale özelliğinin nasıl kullanılacağını gösteren bir örnek sunmaktadır.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
using (var image = (PsdImage)Image.Load(dataDir + "FillLayerGradient.psd"))
{
// getting a fill layer
FillLayer fillLayer = null;
foreach (var layer in image.Layers)
{
fillLayer = layer as FillLayer;
if (fillLayer != null)
{
break;
}
}
var settings = fillLayer.FillSettings as IGradientFillSettings;
// update scale value
settings.Scale = 200;
fillLayer.Update(); // Updates pixels data
image.Save(dataDir + "scaledImage.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}

Renk Dolgusu ile Dolgu Katmanları

Bu makale, PSD katmanını Renk ile doldurmanın nasıl yapıldığını göstermektedir. Lütfen Psd.Layers.FillLayer sınıfını PSD katmanına Renk eklemek için kullanın. Aşağıdaki kod parçası bir PSD dosyası yükler, Fill katman sınıfına erişir ve rengi FillLayer.FillSettings özelliğini kullanarak ayarlar.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
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;
}
}
}