Aspose.PSD за .NET 20.4 - Бележки за версията
Ключ | Обобщение | Категория |
---|---|---|
PSDNET-567 | Поддръжка на ресурса ‘Данни за произход на вектора’ | Функционалност |
PSDNET-373 | Поддръжка на lclrResource (Настройка на цвета на листа) | Функционалност |
PSDNET-563 | Поддръжка на свойствата от данните на LengthRecord. (Операции върху пътеки (булеви операции), индекс на формата в слоя, брой на записите за кръгови възли) | Функционалност |
PSDNET-425 | Поддръжка на ресурса Image Section #1010 Заден план на цвета | Функционалност |
PSDNET-530 | Добавяне на слоеве за попълване по време на изпълнение | Функционалност |
PSDNET-424 | Поддръжка на ресурса Image Section #1009 Информация за границите | Функционалност |
PSDNET-592 | Поддръжка на слоеве във файловете във формат AI | Функционалност |
PSDNET-256 | Поддръжка за четене и редактиране на ефекта на слоя с градиентен оверлей | Функционалност |
PSDNET-257 | Изчертаване на ефекта на слоя с градиентен оверлей | Функционалност |
PSDNET-585 | Промените в свойството BlendMode на GradientOverlayEffect не се показват в Photoshop | Проблем |
PSDNET-561 | Оправяне на запазването на PSD изображение с Grayscale ColorMode и 16 бита на канал към формата на Grayscale PSD | Проблем |
PSDNET-560 | Оправяне на запазването на PSD изображение с Grayscale ColorMode и 16 бита на канал към формата PNG | Проблем |
Промени в публичното API
Добавени API:
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.Name
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsTemplate
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsLocked
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsShown
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsPrinted
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsPreview
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsImagesDimmed
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.DimValue
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.ColorNumber
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.Red
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.Green
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.Blue
- M:Aspose.PSD.FileFormats.Psd.Layers.FillLayers.FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType)
- T:Aspose.PSD.FileFormats.Psd.Resources.BackgroundColorResource
- M:Aspose.PSD.FileFormats.Psd.Resources.BackgroundColorResource.#ctor
- P:Aspose.PSD.FileFormats.Psd.Resources.BackgroundColorResource.DataSize
- P:Aspose.PSD.FileFormats.Psd.Resources.BackgroundColorResource.MinimalVersion
- P:Aspose.PSD.FileFormats.Psd.Resources.BackgroundColorResource.Color
- T:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource
- M:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource.#ctor
- P:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource.DataSize
- P:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource.MinimalVersion
- P:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource.Width
- P:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource.Unit
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.BezierKnotRecord.#ctor
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.InitialFillRuleRecord.#ctor(System.Boolean)
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.#ctor
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.BezierKnotRecordsCount
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.PathOperations
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.ShapeIndex
- T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.#ctor
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.Save(Aspose.PSD.StreamContainer,System.Int32)
- F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.TypeToolKey
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.Signature
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.Key
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.PsdVersion
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.Version
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.Length
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.ShapeOriginSettings
- T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorShapeOriginSettings
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorShapeOriginSettings.#ctor(System.Boolean,System.Int32)
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorShapeOriginSettings.IsShapeInvalidated
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorShapeOriginSettings.OriginIndex
- T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathOperations
- F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathOperations.ExcludeOverlappingShapes
- F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathOperations.CombineShapes
- F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathOperations.SubtractFrontShape
- F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathOperations.IntersectShapeAreas
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPathDataResource.#ctor
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VsmsResource.#ctor
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VmskResource.#ctor
- M:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.GradientColorPoint.#ctor(Aspose.PSD.Color,System.Int32,System.Int32)
Премахнати API:
- Нито един
Примери за използване:
PSDNET-567. Поддръжка на ресурса ‘Данни за произход на вектора’
// Поддръжка на ресурса VogkResource
static void ПримерЗаПоддръжкаНаРесурсаВогкРесурс()
{
string имеНаФайла = "VectorOriginationDataResource.psd";
string имеЗаИзходноФайлаНаФайл = "out_VectorOriginationDataResource_.psd";
using (var изображениеПсд = (PsdImage)Image.Load(имеНаФайла))
{
var ресурс = GetVogkResource(изображениеПсд);
// Четене
if (ресурс.ShapeOriginSettings.Length != 1 ||
!ресурс.ShapeOriginSettings[0].IsShapeInvalidated ||
ресурс.ShapeOriginSettings[0].OriginIndex != 0)
{
throw new Exception("Има грешка при четене на VogkResource.");
}
// Редактиране
ресурс.ShapeOriginSettings = new[]
{
ресурс.ShapeOriginSettings[0],
new VectorShapeOriginSettings(true, 1)
};
изображениеПсд.Save(имеЗаИзходноФайлаНаФайл);
}
}
static VogkResource GetVogkResource(PsdImage image)
{
var layer = image.Layers[1];
VogkResource resource = null;
var resources = layer.Resources;
for (int i = 0; i < resources.Length; i++)
{
if (resources[i] is VogkResource)
{
resource = (VogkResource)resources[i];
break;
}
}
if (resource == null)
{
throw new Exception("Ресурсът VogkResource не е намерен.");
}
return resource;
}
PSDNET-373. Поддръжка на lclrResource (Настройка на цвета на листа)
static void ПроверкаНаЦветоветеНаЛистИОбръщане(SheetColorHighlightEnum[] цветовеЗаЛистове, PsdImage изображение)
{
int бройСлоеве = изображение.Layers.Length;
for (int индексНаСлой = 0; индексНаСлоеве < бройСлоеве; индексНаСлой++)
{
Layer слой = изображение.Layers[индексНаСлой];
LayerResource[] ресурси = слой.Resources;
foreach (LayerResource слойРесурс in ресурси)
{
// Ресурсът lcrl винаги е наличен в списъка с ресурси на psd файл.
LclrResource ресурс = слойРесурс as LclrResource;
if (ресурс != null)
{
if (ресурс.Color != цветовеЗаЛистове[индексНаСлой])
{
throw new Exception("Цветът на листа е прочетен грешно");
}
// Обръщане на цветовете на листовете. Задаване на оцветяването на слой.
ресурс.Color = цветовеЗаЛистове[бройСлоеве - индексНаСлой - 1];
break;
}
}
}
}
string източенФайлПът = "AllLclrResourceColors.psd";
string изходенФайлПът = "AllLclrResourceColorsReversed.psd";
// Във файла цветовете на слоевете за оцветяване са в този ред
SheetColorHighlightEnum[] цветовеЗаЛистове = new SheetColorHighlightEnum[] {
SheetColorHighlightEnum.Red,
SheetColorHighlightEnum.Orange,
SheetColorHighlightEnum.Yellow,
SheetColorHighlightEnum.Green,
SheetColorHighlightEnum.Blue,
SheetColorHighlightEnum.Violet,
SheetColorHighlightEnum.Gray,
SheetColorHighlightEnum.NoColor
};
// Цветовете на листа се използват за визуално оцветяване на слоевете.
// Например можете да актуализирате някои слоеве в PSD и след това да оцветите с цвят слоя, който искате да привлече вниманието.
using (PsdImage изображение = (PsdImage)Image.Load(източенФайлПът))
{
ПроверкаНаЦветоветеНаЛистИОбръщане(цветовеЗаЛистове, изображение);
изображение.Save(изходенФайлПът, new PsdOptions());
}
using (PsdImage изображение = (PsdImage)Image.Load(изходенФайлПът))
{
// Цветовете трябва да бъдат обръщани
Array.Reverse(цветовеЗаЛистове);
ПроверкаНаЦветоветеНаЛистИОбръщане(цветовеЗаЛистове, изображение);
}
PSDNET-563. Поддръжка на свойствата от данните на LengthRecord. (Операции върху пътеки (булеви операции), индекс на формата в слоя, брой на записите за кръгови възли)
string имеНаФайла = "PathOperationsShape.psd";
using (var им = (PsdImage)Image.Load(имеНаФайла))
{
VsmsResource ресурс = null;
foreach (var layerResource in им.Layers[1].Resources)
{
if (layerResource is VsmsResource)
{
ресурс = (VsmsResource)layerResource;
break;
}
}
LengthRecord lengthRecord0 = (LengthRecord)ресурс.Paths[2];
LengthRecord lengthRecord1 = (LengthRecord)ресурс.Paths[7];
LengthRecord lengthRecord2 = (LengthRecord)ресурс.Paths[11];
// Тук променяме начина на комбиниране между формите.
lengthRecord0.PathOperations = PathOperations.ExcludeOverlappingShapes;
lengthRecord1.PathOperations = PathOperations.IntersectShapeAreas;
lengthRecord2.PathOperations = PathOperations.SubtractFrontShape;
им.Save("out_" + имеНаФайла);
}
PSDNET-425. Поддръжка на ресурса Image Section #1010 Заден план на цвета
string изходенФайл = "изходен.psd";
using (var изображение = (PsdImage)Image.Load(изходенФайл))
{
ResourceBlock[] ресурсиНаИзображението = изображение.ImageResources;
BackgroundColorResource ресурсНаЗаденПланНаЦвета = null;
foreach (var ресурсНаИзображението in ресурсиНаИзображението)
{
if (ресурсНаИзображението is BackgroundColorResource)
{
ресурсНаЗаденПланНаЦвета = (BackgroundColorResource)ресурсНаИзображението;
break;
}
}
// актуализация на BackgroundColorResource
ресурсНаЗаденПланНаЦвета.Color = Color.DarkRed;
изображение.Save(изходенФайл);
}
PSDNET-530. Добавяне на слоеве за попълване по време на изпълнение
string outputPsd = "output.psd";
using (var image = new PsdImage(100, 100))
{
FillLayer colorFillLayer = FillLayer.CreateInstance(FillType.Color);
colorFillLayer.DisplayName = "Color Fill Layer";
image.AddLayer(colorFillLayer);
FillLayer gradientFillLayer = FillLayer.CreateInstance(FillType.Gradient);
gradientFillLayer.DisplayName = "Gradient Fill Layer";
image.AddLayer(gradientFillLayer);
FillLayer patternFillLayer = FillLayer.CreateInstance(FillType.Pattern);
patternFillLayer.DisplayName = "Pattern Fill Layer";
patternFillLayer.Opacity = 50;
image.AddLayer(patternFillLayer);
image.Save(outputPsd);
}
PSDNET-424. Поддръжка на ресурса Image Section #1009 Информация за границите
string sourceFile = "input.psd";
string outputFile = "output.psd";
using (var image = (PsdImage)Image.Load(sourceFile))
{
ResourceBlock[] imageResources = image.ImageResources;
BorderInformationResource borderInfoResource = null;
foreach (var imageResource in imageResources)
{
if (imageResource is BorderInformationResource)
{
borderInfoResource = (BorderInformationResource)imageResource;
break;
}
}
// update BorderInformationResource
borderInfoResource.Width = 0.1;
borderInfoResource.Unit = PhysicalUnit.Inches;
image.Save(outputFile);
}
PSDNET-592. Поддръжка на слоеве във файловете във формат AI
void AssertIsTrue(bool condition, string message)
{
if (!condition)
{
throw new FormatException(message);
}
}
string sourceFileName = "form_8_2l3_7.ai";
string outputFileName = "form_8_2l3_7_export";
using (AiImage image = (AiImage)Image.Load(sourceFileName))
{
AiLayerSection layer0 = image.Layers[0];
AssertIsTrue(layer0 != null, "Layer 0 should be not null.");
AssertIsTrue(layer0.Name == "Layer 4", "The Name property of the layer 0 should be Layer 4");
AssertIsTrue(!layer0.IsTemplate, "The IsTemplate property of the layer 0 should be false.");
AssertIsTrue(layer0.IsLocked, "The IsLocked property of the layer 0 should be true.");
AssertIsTrue(layer0.IsShown, "The IsShown property of the layer 0 should be true.");
AssertIsTrue(layer0.IsPrinted, "The IsPrinted property of the layer 0 should be true.");
AssertIsTrue(!layer0.IsPreview, "The IsPreview property of the layer 0 should be false.");
AssertIsTrue(layer0.IsImagesDimmed, "The IsImagesDimmed property of the layer 0 should be true.");
AssertIsTrue(layer0.DimValue == 51, "The DimValue property of the layer 0 should be 51.");
AssertIsTrue(layer0.ColorNumber == 0, "The ColorNumber property of the layer 0 should be 0.");
AssertIsTrue(layer0.Red == 79, "The Red property of the layer 0 should be 79.");
AssertIsTrue(layer0.Green == 128, "The Green property of the layer 0 should be 128.");
AssertIsTrue(layer0.Blue == 255, "The Blue property of the layer 0 should be 255.");
AssertIsTrue(layer0.RasterImages.Length == 0, "The pixels length property of the raster image in the layer 0 should equals 0.");
AiLayerSection layer1 = image.Layers[1];
AssertIsTrue(layer1 != null, "Layer 1 should be not null.");
AssertIsTrue(layer1.Name == "Layer 1", "The Name property of the layer 1 should be Layer 1");
AssertIsTrue(layer1.RasterImages.Length == 1, "The length property of the raster images in the layer 1 should equals 1.");
AiRasterImageSection rasterImage = layer1.RasterImages[0];
AssertIsTrue(rasterImage != null, "The raster image in the layer 1 should be not null.");
AssertIsTrue(rasterImage.Pixels != null, "The pixels property of the raster image in the layer 1 should be not null.");
AssertIsTrue(string.Empty == rasterImage.Name, "The Name property of the raster image in the layer 1 should be empty");
AssertIsTrue(rasterImage.Pixels.Length == 100, "The pixels length property of the raster image in the layer 1 should equals 100.");
image.Save(outputFileName + ".psd", new PsdOptions());
image.Save(outputFileName + ".png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}
PSDNET-256. Поддръжка за четене и редактиране на ефекта на слоя с градиентен оверлей
// Creates/Gets and edits the gradient overlay effect in a layer.
using (var psdImage = this.LoadFile("psdnet256.psd", new PsdLoadOptions() { LoadEffectsResource = true }))
{
BlendingOptions layerBlendOptions = psdImage.Layers[1].BlendingOptions;
GradientOverlayEffect gradientOverlayEffect = null;
// Search GradientOverlayEffect in a layer.
foreach (ILayerEffect effect in layerBlendOptions.Effects)
{
gradientOverlayEffect = effect as GradientOverlayEffect;
if (gradientOverlayEffect != null)
{
break;
}
}
if (gradientOverlayEffect == null)
{
// You can create a new GradientOverlayEffect if it not exists.
gradientOverlayEffect = layerBlendOptions.AddGradientOverlay();
}
// Add a bit of transparency to the effect.
gradientOverlayEffect.Opacity = 200;
// Change the blend mode of gradient effect.
gradientOverlayEffect.BlendMode = BlendMode.Hue;
// Gets GradientFillSettings object to configure gradient overlay settings.
GradientFillSettings settings = gradientOverlayEffect.Settings;
// Setting a new gradient with two colors.
settings.ColorPoints = new IGradientColorPoint[]
{
new GradientColorPoint(Color.GreenYellow, 0, 50),
new GradientColorPoint(Color.BlueViolet, 4096, 50),
};
// Sets an inclination of the gradient at an angle of 80 degrees.
settings.Angle = 80;
// Scale gradient effect up to 150%.
settings.Scale = 150;
// Sets type of gradient.
settings.GradientType = GradientType.Linear;
// Make the gradient opaque by setting the opacity to 100% at each transparency point.
settings.TransparencyPoints[0].Opacity = 100;
settings.TransparencyPoints[1].Opacity = 100;
psdImage.Save("psdnet256.psd_output.psd");
}
PSDNET-257. Изчертаване на ефекта на слоя с градиентен оверлей. Функционалност
string srcFile = "gradientOverlayEffect.psd";
string outputPng = "output.png";
string outputPsd = "output.psd";
using (var psdImage = (PsdImage)Image.Load(srcFile, new PsdLoadOptions() { LoadEffectsResource = true }))
{
psdImage.Save(outputPng, new PngOptions());
psdImage.Save(outputPsd);
}
PSDNET-585. Промените в свойството BlendMode на GradientOverlayEffect не се показват в Photoshop
string srcFile = "psdnet585.psd";
string outFile = "out_psdnet585.psd";
using (var psdImage = (PsdImage)Image.Load(srcFile))
{
var gradientOverlayEffect = psdImage.Layers[1].BlendingOptions.AddGradientOverlay();
gradientOverlayEffect.BlendMode = BlendMode.Subtract;
psdImage.Save(outFile);
// After saving open 'outFile' manually in Photoshop and check Blend Mode in 'Gradient Overlay' effect settings of 'Layer 1'.
}
PSDNET-561. Оправяне на запазването на PSD изображение с Grayscale ColorMode и 16 бита на канал към формата на Grayscale PSD
string sourceFileName = "grayscale16bit.psd";
string exportFileName = "grayscale16bit_output.psd";
PsdOptions psdOptions = new PsdOptions()
{
ColorMode = ColorModes.Grayscale, ChannelBitsCount = 16, ChannelsCount = 2
};
using (PsdImage image = (PsdImage)Image.Load(sourceFileName))
{
RasterCachedImage raster = image.Layers[0];
Aspose.PSD.Graphics graphics = new Graphics(raster);
int width = raster.Width;
int height = raster.Height;
Rectangle rect = new Rectangle(width / 3, height / 3, width - (2 * (width / 3)) - 1, height - (2 * (height / 3)) - 1);
graphics.DrawRectangle(new Aspose.PSD.Pen(Color.DarkGray, 1), rect);
image.Save(exportFileName, psdOptions);
}
string pngExportPath = Path.ChangeExtension(exportFileName, "png");
using (PsdImage image = (PsdImage)Image.Load(exportFileName))
{
// Here should be no exception.
image.Save(pngExportPath, new PngOptions() { ColorType = PngColorType.GrayscaleWithAlpha });
}
PSDNET-560. Оправяне на запазването на PSD изображение с Grayscale ColorMode и 16 бита на канал към формата PNG
string sourceFileName = "grayscale16bit.psd";
string exportPath = "grayscale_output.png";
using (PsdImage image = (PsdImage)Image.Load(sourceFileName))
{
image.Save(exportPath, new PngOptions() { ColorType = PngColorType.GrayscaleWithAlpha });
}