Как использовать 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 | |
}); | |
} |
Результат:
Помимо рендеринга эффекта 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 | |
}); | |
} |
Результат:
! Примечание: В настоящее время наша библиотека поддерживает рендеринг как 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 | |
}); | |
} |
Результат:
Часть 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 | |
}); | |
} |
Результат:
Нижеприведенный пример кода демонстрирует, как добавить пользовательский эффект 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 | |
}); | |
} |
Результат:
Нижеприведенный пример кода демонстрирует, как добавить эффект 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 | |
}); | |
} |
Результат:
Мы постоянно совершенствуем и расширяем возможности нашего эффекта Warp, сосредотачиваясь на увеличении его скорости, качества и поддерживаемой функциональности. Следите за нашими ежемесячными обновлениями для получения последних разработок. Ваша команда Aspose.PSD