Manipulation of Adobe Photoshop Formats
Объединение слоев PSD с другими слоями
Экспорт изображения в формат PSD
PSD, документ PhotoShop, является форматом файла по умолчанию, используемым Adobe Photoshop для работы с изображениями. Aspose.PSD позволяет загружать, редактировать и сохранять файлы в формате PSD, чтобы их можно было открывать и редактировать в Photoshop. В данной статье показано, как сохранить файл в формате PSD с помощью Aspose.PSD, и также обсуждаются некоторые настройки, которые можно использовать при сохранении в этот формат. PsdOptions - это специализированный класс в пространстве имен ImageOptions, используемый для экспорта изображений в PSD. Чтобы экспортировать в PSD, создайте экземпляр класса Image, загруженный либо из существующего файла изображения (например, миниатюры), либо созданный с нуля. В этой статье объясняется, как это делать. В приведенных ниже примерах изображение создается с нуля. После создания изображение и заполнения пиксельными данными сохраните изображение, используя метод Save класса Image, и предоставьте объект PsdOptions в качестве второго аргумента. Несколько свойств класса PsdOptions могут быть установлены для расширенного преобразования. Некоторые из свойств: ColorMode, CompressionMethod и Version. Aspose.PSD поддерживает следующие методы сжатия через перечисление CompressionMethod:
- CompressionMethod.Raw
- CompressionMethod.RLE
- CompressionMethod.ZipWithoutProtection
- CompressionMethod.ZipWithProtection
Следующие режимы цвета поддерживаются через перечисление ColorModes:
- ColorModes.Bitmap
- ColorModes.Grayscale
- ColorModes.RGB
Могут быть добавлены дополнительные ресурсы, такие как ресурсы миниатюр для PSD v4.0, v5.0 и более поздних версий или сетка и руководство для PSD v4.0 и более поздних версий. Приведенный ниже код создает файл изображения с нуля, заполняет пиксели и сохраняет его в формате PSD с сжатием RLE и режимом цвета оттенков серого. Приведенный ниже код показывает, как экспортировать изображение в PSD.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Create a new image from scratch. | |
using (PsdImage image = new PsdImage(300, 300)) | |
{ | |
// Fill image data. | |
Graphics graphics = new Graphics(image); | |
graphics.Clear(Color.White); | |
var pen = new Pen(Color.Brown); | |
graphics.DrawRectangle(pen, image.Bounds); | |
// Create an instance of PsdOptions, Set it's various properties Save image to disk in PSD format | |
PsdOptions psdOptions = new PsdOptions(); | |
psdOptions.ColorMode = ColorModes.Rgb; | |
psdOptions.CompressionMethod = CompressionMethod.Raw; | |
psdOptions.Version = 4; | |
image.Save(dataDir + "ExportImageToPSD_output.psd", psdOptions); | |
} |
Импорт изображения в слой PSD
В этой статье демонстрируется использование Aspose.PSD для добавления или импорта изображения в слой PSD. Aspose.PSD API предоставляет эффективные и простые в использовании методы для достижения этой цели. В Aspose.PSD экспонированный метод DrawImage класса Layer используется для добавления/импорта изображения в файл PSD. Метод DrawImage требует местоположения и значений изображения для добавления/импорта изображения в файл PSD. Шаги импорта изображения в слой PSD просты:
- Загрузите файл PSD в качестве изображения, используя метод фабрики Load, экспонированный классом Image.
- Создайте экземпляр класса Layer из потока с файлом Png, Jpeg, Tiff, Gif, Bmp, Psd или j2k
- Добавьте слой в PSD с помощью метода AddLayer
- Сохраните результат.
Приведенный ниже код показывает, как импортировать изображение в слой PSD.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string outputFilePath = dataDir + "PsdResult.psd"; | |
var filesList = new string[] | |
{ | |
"PsdExample.psd", | |
"BmpExample.bmp", | |
"GifExample.gif", | |
"Jpeg2000Example.jpf", | |
"JpegExample.jpg", | |
"PngExample.png", | |
"TiffExample.tif", | |
}; | |
using (var image = new PsdImage(200, 200)) | |
{ | |
foreach (var fileName in filesList) | |
{ | |
string filePath = dataDir + fileName; | |
using (var stream = new FileStream(filePath, FileMode.Open)) | |
{ | |
Layer layer = null; | |
try | |
{ | |
layer = new Layer(stream); | |
image.AddLayer(layer); | |
} | |
catch (Exception e) | |
{ | |
if (layer != null) | |
{ | |
layer.Dispose(); | |
} | |
throw e; | |
} | |
} | |
} | |
image.Save(outputFilePath); | |
} |
Замена цвета в слоях PSD
Эта статья демонстрирует использование Aspose.PSD для добавления или импорта изображения в слой PSD. В Aspose.PSD API предоставляются эффективные и простые в использовании методы для достижения этой цели. Aspose.PSD экспонирует метод DrawImage класса Layer для добавления/импорта изображения в файл PSD. Метод DrawImage требует местоположения и значений изображения для добавления/импорта изображения в файл PSD. Шаги импорта изображения в слой PSD просты:
- Загрузите файл PSD в качестве изображения, используя метод фабрики Load, экспонированный классом Image.
- Создайте экземпляр класса Layer и назначьте ему изображение PSD слоя.
- Загрузите изображение, которое необходимо добавить или создайте изображение с нуля.
- Вызовите метод Layer.DrawImage, указав местоположение и экземпляр изображения.
- Сохраните результат.
Приведенный ниже код показывает, как импортировать изображение в слой PSD.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Load a PSD file as an image and caste it into PsdImage | |
using (PsdImage image = (PsdImage)Image.Load(dataDir + "sample.psd")) | |
{ | |
foreach (var layer in image.Layers) | |
{ | |
if (layer.Name == "Rectangle 1") | |
{ | |
layer.HasBackgroundColor = true; | |
layer.BackgroundColor = Color.Orange; | |
} | |
} | |
image.Save(dataDir + "asposeImage02.psd"); | |
} |
Создание миниатюр из файлов PSD
PSD - это собственный формат документа приложения Adobe Photoshop. Adobe Photoshop (версия 5.0 и выше) сохраняет информацию о миниатюрах для предварительного просмотра в блоке ресурсов изображения, который состоит из начального заголовка из 28 байт, за которым следует миниатюра JFIF в порядке RGB (красный, зеленый, синий). API Aspose.PSD предоставляет простой в использовании механизм для доступа к ресурсам файла PSD. Эти ресурсы также включают ресурс миниатюры, которая, в свою очередь, может быть извлечена и сохранена на диск в соответствии с потребностями приложения. Приведенный ниже код показывает, как создать миниатюры из файлов PSD.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Load a PSD file as an image and caste it into PsdImage | |
using (PsdImage image = (PsdImage)Image.Load(dataDir + "sample.psd")) | |
{ | |
int index = 0; | |
// Iterate over the PSD resources | |
foreach (var resource in image.ImageResources) | |
{ | |
index++; | |
// Check if the resource is of thumbnail type | |
if (resource is ThumbnailResource) | |
{ | |
// Retrieve the ThumbnailResource and Check the format of the ThumbnailResource | |
var thumbnail = (ThumbnailResource)resource; | |
if (thumbnail.Format == ThumbnailFormat.KJpegRgb) | |
{ | |
// Create a new image by specifying the width and height, Store the pixels of thumbnail on to the newly created image and save image | |
PsdImage thumnailImage = new PsdImage(thumbnail.Width, thumbnail.Height); | |
thumnailImage.SavePixels(thumnailImage.Bounds, thumbnail.ThumbnailData); | |
thumnailImage.Save(dataDir + "CreateThumbnailsFromPSDFiles_out_" + index.ToString() + ".bmp", new BmpOptions()); | |
} | |
} | |
} | |
} |
Создание индексированных файлов PSD
API Aspose.PSD для .NET может создавать индексированные файлы PSD с нуля. В данной статье демонстрируется использование классов PsdOptions и PsdImage для создания индексированного PSD при рисовании некоторых форм на новом холсте. Для создания индексированного файла PSD требуется выполнить следующие шаги:
- Создайте экземпляр PsdOptions и установите его источник.
- Установите свойство ColorMode PsdOptions в ColorModes.Indexed.
- Создайте новую палитру цветов из RGB пространства и установите ее в качестве свойства Palette PsdOptions.
- Установите свойство CompressionMethod на необходимый алгоритм сжатия.
- Создайте новое изображение PSD, вызвав метод PsdImage.Create.
- Нанесите графику или выполните другие операции по необходимости.
- Вызовите метод PsdImage.Save для применения всех изменений.
Приведенный ниже код показывает, как создать индексированные файлы PSD.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Create an instance of PsdOptions and set it's properties | |
var createOptions = new PsdOptions(); | |
createOptions.Source = new FileCreateSource(dataDir + "Newsample_out.psd", false); | |
createOptions.ColorMode = ColorModes.Indexed; | |
createOptions.Version = 5; | |
// Create a new color palette having RGB colors, Set Palette property & compression method | |
Color[] palette = { Color.Red, Color.Green, Color.Blue, Color.Yellow }; | |
createOptions.Palette = new PsdColorPalette(palette); | |
createOptions.CompressionMethod = CompressionMethod.RLE; | |
// Create a new PSD with PsdOptions created previously | |
using (var psd = Image.Create(createOptions, 500, 500)) | |
{ | |
// Draw some graphics over the newly created PSD | |
var graphics = new Graphics(psd); | |
graphics.Clear(Color.White); | |
graphics.DrawEllipse(new Pen(Color.Red, 6), new Rectangle(0, 0, 400, 400)); | |
psd.Save(); | |
} |