Ключ Описание Категория
PSDNET-1679 [Формат AI] Добавлена поддержка отображения растрового изображения в новой версии AI Функционал
PSDNET-1454 Обработка типа градиента “Шум” в GdflResrource Функционал
PSDNET-1827 Ошибка “Ссылка на объект не указывает на экземпляр объекта.” при сохранении текстового слоя после обновления Ошибка
PSDNET-1776 Исправление ручной загрузки шрифтов на MacOS с использованием System.Drawing.Common и Aspose.Drawing. Ошибка
PSDNET-1536 AllowWarpRepaint в PsdLoadOptions приводит к исключению Ошибка
PSDNET-1714 [Формат AI] Реализовать обработку потоков кросс-ссылок Улучшение
PSDNET-1834 Лицензионное управление для VectorPathDataResource работает некорректно Улучшение
PSDNET-770 Открытие любого изображения в качестве встроенного умного объекта в PSD изображении Улучшение
PSDNET-1864 Система лицензирования плагинов для Aspose.PSD Улучшение

Изменения в публичном API

Добавленные API:

Удаленные API:

Примеры использования:

PSDNET-1679. [Формат AI] Добавление поддержки отображения растрового изображения в новой версии AI

            string sourceFile = Path.Combine(baseFolder, "raster.ai");
            string outputFile = Path.Combine(outputFolder, "raster_output.png");

            using (AiImage image = (AiImage)Image.Load(sourceFile))
            {
                image.Save(outputFile, new PngOptions());
            }

PSDNET-1454. Обработка типа градиента “Шум” в GdflResrource

            string sourceFile = "Gradient-Fill.psd";
            string destFile = "Gradient-Fill-out.psd";

            using (var image = (PsdImage)Image.Load(sourceFile, new PsdLoadOptions()))
            {
                Layer layer = image.Layers[1];

                foreach (LayerResource resource in layer.Resources)
                {
                    GdFlResource gdFlResource = resource as GdFlResource;

                    if (gdFlResource != null)
                    {
                        gdFlResource.Scale = 90;
                        gdFlResource.Angle = 30;
                        gdFlResource.Dither = false;
                        gdFlResource.AlignWithLayer = true;
                        gdFlResource.Reverse = false;

                        break;
                    }
                }

                image.Save(destFile, new PsdOptions());
            }

PSDNET-1827. Ошибка “Ссылка на объект не указывает на экземпляр объекта.” при сохранении текстового слоя после обновления

string sourceFile = Path.Combine(baseFolder, "input_1827.psd");
string outputFile = Path.Combine(outputFolder, "out_1827.psd");

using (var psdImage = (PsdImage)Image.Load(sourceFile))
{
    foreach (var layer in psdImage.Layers)
    {
        if (layer is TextLayer textLayer)
        {
            textLayer.TextData.UpdateLayerData();
        }
    }

    // Здесь не должно быть ошибок
    psdImage.Save(outputFile);
}

PSDNET-1536. AllowWarpRepaint в PsdLoadOptions приводит к исключению

            string sourceFile = @"SizeChart-4 Colors.psd";
            string outputFile = @"SizeChart-4 Colors.png";

            using (var psdImage = (PsdImage)Aspose.PSD.Image.Load(sourceFile, new PsdLoadOptions() { AllowWarpRepaint = true, LoadEffectsResource = true })) 
			{ 
				psdImage.Save(outputFile + "_original.png", new PngOptions()
				{
					ColorType = PngColorType.TruecolorWithAlpha,
					Progressive = true,
					CompressionLevel = 9
				});
			}

PSDNET-1834. Лицензионное управление для VectorPathDataResource работает некорректно

 using (PsdImage im = (PsdImage)Image.Load(DifferentLayerMasks.psd))
 {
     im.Save(complexFiles[i] + "out" + "output.psd");
     im.Save(complexFiles[i] + "out" + "output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
 }

PSDNET-770. Открытие любого изображения в качестве встроенного умного объекта в PSD изображении

string sourceFile = Path.Combine(baseFolder, "empty.psd");

string addTreeFile = Path.Combine(baseFolder, "tree.psd");
string addFrostFile = Path.Combine(baseFolder, "frost.png");

string outputTreeFile = Path.Combine(outputFolder, "tree_export.psd");
string outputFrostFile = Path.Combine(outputFolder, "frost_export.psd");

using (var psdImage = (PsdImage)Image.Load(sourceFile, new PsdLoadOptions() { LoadEffectsResource = true }))
{
    using (Stream stream = new FileStream(addTreeFile, FileMode.Open))
    {
        using (SmartObjectLayer smartLayer = new SmartObjectLayer(stream))
        {
            psdImage.AddLayer(smartLayer);

            psdImage.Save(outputTreeFile, new PsdOptions());                        
        }
    }
}

using (var psdImage = (PsdImage)Image.Load(sourceFile, new PsdLoadOptions() { LoadEffectsResource = true }))
{
    using (Stream stream = new FileStream(addFrostFile, FileMode.Open))
    {
        using (SmartObjectLayer smartLayer = new SmartObjectLayer(stream))
        {
            psdImage.AddLayer(smartLayer);

            psdImage.Save(outputFrostFile, new PsdOptions());
        }
    }
}

PSDNET-1864. Система лицензирования плагинов для Aspose.PSD

            
    var metered = new Metered();
    metered.SetMeteredKey(pluginPublic, pluginPrivate);
			
	// Специфический для плагина код