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();
}