Как использовать Warp в Aspose.PSD

Часть 1 – Рендеринг PSD файла с эффектом Warp

Photoshop сохраняет отрендеренное изображение после применения эффекта Warp. Наша библиотека может воспроизвести или перерендерить изображение с эффектом Warp. Чтобы включить эту функцию, просто установите флаг AllowWarpRepaint в настройках при открытии файла PSD.

string sourceFile = "warp_flag.psd";
string outputFile = "total.png";
using (var psdImage = (PsdImage)Image.Load(sourceFile, new PsdLoadOptions() { AllowWarpRepaint = true, LoadEffectsResource = true }))
{
psdImage.Save(outputFile, new PngOptions
{
ColorType = PngColorType.TruecolorWithAlpha
});
}

Результат: Aspose.PSD для .NET результат Warp 1

Помимо рендеринга эффекта Warp для SmartLayers, наша библиотека также поддерживает Warp для TextLayers. Реализация кода остается идентичной, единственное отличие заключается в имени файла.

string sourceFile = "warp_text_wave.psd";
string outputFile = "total.png";
using (var psdImage = (PsdImage)Image.Load(sourceFile, new PsdLoadOptions() { AllowWarpRepaint = true, LoadEffectsResource = true }))
{
psdImage.Save(outputFile, new PngOptions
{
ColorType = PngColorType.TruecolorWithAlpha
});
}

Результат: Aspose.PSD для .NET результат Warp 2

! Примечание: В настоящее время наша библиотека поддерживает рендеринг как Custom Warp* (где пользователи манипулируют точками сетки), так и все стандартные типы Warp.

    • В настоящее время наша библиотека поддерживает Custom Warp с стандартной сеткой и мы активно работаем над расширением поддержки для всех типов сеток в ближайшем будущем.

Часть 2 – Изменение эффекта Warp

Наша библиотека позволяет не только рендерить, но и изменять (добавлять) эффект Warp. Эти модификации облегчаются функциями класса WarpParams.

Функция Описание
Bounds Возвращает границы искаженного изображения.
MeshPoints Массив точек, где каждая точка представляет вершину сетки Warp.
Value Значение эффекта Warp для не-Custom Warp эффектов.
WarpRotates Перечисление, определяющее направление не-Custom Warp эффектов.
WarpStyles Перечисление, определяющее тип эффекта Warp.

Нижеприведенный пример кода демонстрирует, как определить тип эффекта Warp для Smart Layer и настроить тип и интенсивность искажения эффекта.

string sourceFile = "warp_flag.psd";
string outputFile = "total.png";
using (var psdImage = (PsdImage)Image.Load(sourceFile, new PsdLoadOptions() { AllowWarpRepaint = true, LoadEffectsResource = true }))
{
var smartLayer = (SmartObjectLayer)psdImage.Layers[0];
WarpParams warpParams = smartLayer.WarpParams;];
WarpParams warpParams = smartLayer.WarpParams;
if (warpParams.Style == WarpStyles.Flag)
{
warpParams.Style = WarpStyles.Wave;
warpParams.Value = 20;
}
psdImage.Save(outputFile, new PngOptions
{
ColorType = PngColorType.TruecolorWithAlpha
});
}

Результат: Aspose.PSD для .NET результат Warp 3

Часть 3 – Добавление эффекта Warp

Нижеприведенный пример кода демонстрирует, как добавить стандартный эффект Warp к Smart Layer.

string sourceFile = "smart_object.psd";
string outputFile = "total.png";
using (var psdImage = (PsdImage)Image.Load(sourceFile, new PsdLoadOptions() { AllowWarpRepaint = true, LoadEffectsResource = true }))
{
// The smart object without Warp effect
var smartLayer = (SmartObjectLayer)psdImage.Layers[0];
// It gets structure for warp effect
WarpParams warpParams = smartLayer.WarpParams;
// It sets parameters for warp effect
warpParams.Style = WarpStyles.Arc;
warpParams.Value = 10;
psdImage.Save(outputFile, new PngOptions
{
ColorType = PngColorType.TruecolorWithAlpha
});
}

Результат: Aspose.PSD для .NET результат Warp 4

Нижеприведенный пример кода демонстрирует, как добавить пользовательский эффект Warp к Smart Layer.

string sourceFile = "smart_object.psd";
string outputFile = "total.png";
using (var psdImage = (PsdImage)Image.Load(sourceFile, new PsdLoadOptions() { AllowWarpRepaint = true, LoadEffectsResource = true }))
{
// The smart object without Warp effect
var smartLayer = (SmartObjectLayer)psdImage.Layers[0];
// It gets structure for warp effect
WarpParams warpParams = smartLayer.WarpParams;
// It sets parameters for warp effect
warpParams.Style = WarpStyles.Custom;
warpParams.MeshPoints[2].Y += 70;
psdImage.Save(outputFile, new PngOptions
{
ColorType = PngColorType.TruecolorWithAlpha
});
}

Результат: Aspose.PSD для .NET результат Warp 5

Нижеприведенный пример кода демонстрирует, как добавить эффект Warp к Text Layer. ! Примечание: Согласно стандартам Photoshop, эффект Warp для Text Layer обычно ограничен стандартным типом. Однако наша библиотека поддерживает использование двух типов Warp эффектов. Обратите внимание, что такие файлы могут не полностью совместимы с Photoshop.

string sourceFile = "smart_object.psd";
string outputFile = "total.png";
using (var psdImage = (PsdImage)Image.Load(sourceFile, new PsdLoadOptions() { AllowWarpRepaint = true, LoadEffectsResource = true }))
{
// The smart object without Warp effect
var smartLayer = (SmartObjectLayer)psdImage.Layers[0];
// It gets structure for warp effect
WarpParams warpParams = smartLayer.WarpParams;
// It sets parameters for warp effect
warpParams.Style = WarpStyles.Custom;
warpParams.MeshPoints[2].Y += 70;
psdImage.Save(outputFile, new PngOptions
{
ColorType = PngColorType.TruecolorWithAlpha
});
}

Результат: Aspose.PSD для .NET результат Warp 6

Мы постоянно совершенствуем и расширяем возможности нашего эффекта Warp, сосредотачиваясь на увеличении его скорости, качества и поддерживаемой функциональности. Следите за нашими ежемесячными обновлениями для получения последних разработок. Ваша команда Aspose.PSD