Создание, открытие и сохранение файлов 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 версий 4.0, 5.0 и выше, или сетки и ресурсы указателей для PSD версий 4.0 и выше. Приведенный ниже код создает файл BMP с нуля, заполняет пиксели и сохраняет его в PSD с сжатием RLE и режимом цвета оттенков серого. Нижеследующий код показывает вам, как экспортировать изображение в формат PSD.
String dataDir = Utils.getDataDir(ExportImageToPSD.class) + "PSD/"; | |
// Create a new image from scratch. | |
try (PsdImage bmpImage = new PsdImage(300, 300)) { | |
// Fill image data. | |
Graphics graphics = new Graphics(bmpImage); | |
graphics.clear(Color.getWhite()); | |
Pen pen = new Pen(Color.getBrown()); | |
graphics.drawRectangle(pen, bmpImage.getBounds()); | |
// Create an instance of PsdOptions, Set it's various properties Save image to disk in PSD format | |
PsdOptions psdOptions = new PsdOptions(); | |
psdOptions.setColorMode(ColorModes.Rgb); | |
psdOptions.setCompressionMethod(CompressionMethod.Raw); | |
psdOptions.setVersion(4); | |
bmpImage.save(dataDir + "ExportImageToPSD_output.psd", psdOptions); | |
} |
Импорт изображения в слой PSD
В данной статье демонстрируется использование Aspose.PSD для добавления или импорта изображения в слой PSD. API Aspose.PSD предоставляет эффективные и простые в использовании методы для достижения этой цели. Aspose.PSD предоставил метод DrawImage класса Layer для добавления/импорта изображения в файл PSD. Метод DrawImage требует указания местоположения и значения изображения для добавления/импорта изображения в файл PSD. Шаги по импорту изображения в слой PSD просты, как показано ниже:
- Загрузите файл PSD в качестве изображения, используя метод Load, предоставленный классом Image.
- Создайте экземпляр класса Layer и назначьте ему слой изображения PSD.
- Загрузите изображение, которое нужно добавить или создайте его с нуля.
- Вызовите метод Layer.DrawImage, указав местоположение и экземпляр изображения.
- Сохраните результаты.
Нижеследующий код показывает вам, как импортировать изображение в слой PSD.
String dataDir = Utils.getDataDir(ImportImageToPSDLayer.class) + "PSD/"; | |
// Load a PSD file as an image and caste it into PsdImage | |
try (PsdImage image = (PsdImage) Image.load(dataDir + "sample.psd"); | |
//Extract a layer from PSDImage | |
Layer layer = image.getLayers()[1]; | |
// Create an image that is needed to be imported into the PSD file. | |
PsdImage drawImage = new PsdImage(200, 200)) { | |
// Fill image surface as needed. | |
Graphics g = new Graphics(drawImage); | |
g.clear(Color.getYellow()); | |
// Call DrawImage method of the Layer class and pass the image instance. | |
layer.drawImage(new Point(10, 10), drawImage); | |
// Save the results to output path. | |
image.save(dataDir + "ImportImageToPSDLayer_out.psd"); | |
} |
Создание миниатюр из файлов PSD
PSD - это собственный формат документа приложения Adobe Photoshop. Adobe Photoshop (версии 5.0 и выше) хранит информацию о миниатюрах для предварительного просмотра в блоке ресурсов изображения, который состоит из начального заголовка из 28 байт, за которым следует миниатюра JFIF в порядке RGB (красный, зеленый, синий). API Aspose.PSD предоставляет простой в использовании механизм доступа к ресурсам файла PSD. Эти ресурсы также включают ресурс миниатюры, который в свою очередь может быть извлечен и сохранен на диск в соответствии с потребностями приложения. Нижеследующий код показывает вам, как создать миниатюры из файлов PSD.
String dataDir = Utils.getDataDir(CreateThumbnailsFromPSDFiles.class) + "PSD/"; | |
// Load a PSD file as an image and caste it into PsdImage | |
try (PsdImage image = (PsdImage) Image.load(dataDir + "sample.psd")) { | |
int index = 0; | |
// Iterate over the PSD resources | |
for (int i = 0; i < image.getImageResources().length; i++) { | |
index++; | |
// Check if the resource is of thumbnail type | |
if (image.getImageResources()[i] instanceof ThumbnailResource) { | |
// Retrieve the ThumbnailResource and Check the format of the ThumbnailResource | |
ThumbnailResource thumbnail = (ThumbnailResource) image.getImageResources()[i]; | |
if (thumbnail.getFormat() == ThumbnailFormat.KJpegRgb) { | |
// Create a new BmpImage by specifying the width and height, Store the pixels of thumbnail on to the newly created BmpImage and save image | |
PsdImage thumnailImage = new PsdImage(thumbnail.getWidth(), thumbnail.getHeight()); | |
thumnailImage.savePixels(thumnailImage.getBounds(), thumbnail.getThumbnailData()); | |
thumnailImage.save(dataDir + "CreateThumbnailsFromPSDFiles_out_" + i + ".bmp"); | |
} | |
} | |
} | |
} |
Создание индексированных файлов PSD
API Aspose.PSD для Java может создавать индексированные файлы PSD с нуля. В этой статье демонстрируется использование классов PsdOptions и PsdImage для создания индексированного PSD при рисовании некоторых форм на вновь созданном холсте. Для создания индексированного файла PSD требуются следующие простые шаги:
- Создайте экземпляр PsdOptions и укажите его источник.
- Установите свойство ColorMode PsdOptions в ColorModes.Indexed.
- Создайте новую палитру цветов из пространства RGB и укажите ее как свойство Palette в PsdOptions.
- Установите свойство CompressionMethod на необходимый алгоритм сжатия.
- Создайте новое изображение PSD, вызвав метод PsdImage.Create.
- Отрисуйте графику или выполните другие операции по мере необходимости.
- Вызовите метод PsdImage.Save для применения всех изменений.
Нижеследующий код показывает вам, как создать индексированные файлы PSD.
String dataDir = Utils.getDataDir(CreateIndexedPSDFiles.class) + "PSD/"; | |
// Create an instance of PsdOptions and set it's properties | |
PsdOptions createOptions = new PsdOptions(); | |
createOptions.setSource(new FileCreateSource(dataDir + "Newsample_out.psd", false)); | |
createOptions.setColorMode(ColorModes.Indexed); | |
createOptions.setVersion(5); | |
// Create a new color palette having RGB colors, Set Palette property & compression method | |
Color[] palette = {Color.getRed(), Color.getGreen(), Color.getBlue(), Color.getYellow()}; | |
createOptions.setPalette(new PsdColorPalette(palette)); | |
createOptions.setCompressionMethod(CompressionMethod.RLE); | |
// Create a new PSD with PsdOptions created previously | |
try (Image psd = Image.create(createOptions, 500, 500)) { | |
// Draw some graphics over the newly created PSD | |
Graphics graphics = new Graphics(psd); | |
graphics.clear(Color.getWhite()); | |
graphics.drawEllipse(new Pen(Color.getRed(), 6), new Rectangle(0, 0, 400, 400)); | |
psd.save(); | |
} |
Экспорт слоя PSD в растровое изображение
Aspose.PSD для Java позволяет экспортировать слои в файле PSD в растровые изображения. Используйте метод Aspose.PSD.FileFormats.Psd.Layers.Layer.Save для экспорта слоя в изображение. В следующем примере код загружает файл PSD и экспортирует каждый из его слоев в изображение PNG с использованием Aspose.PSD.FileFormats.Psd.Layers.Layer.Save. После того как все слои экспортированы в изображения PNG, вы можете открыть их с помощью вашего любимого просмотрщика изображений. Нижеследующий код показывает вам, как экспортировать слой PSD в растровое изображение.
String dataDir = Utils.getDataDir(ExportPSDLayerToRasterImage.class) + "PSD/"; | |
// Load a PSD file as an image and caste it into PsdImage | |
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "sample.psd")) { | |
// Create an instance of PngOptions class | |
PngOptions pngOptions = new PngOptions(); | |
pngOptions.setColorType(PngColorType.TruecolorWithAlpha); | |
// Loop through the list of layers | |
for (int i = 0; i < psdImage.getLayers().length; i++) { | |
// Convert and save the layer to PNG file format. | |
psdImage.getLayers()[i].save(String.format("layer_out{0}.png", i + 1), pngOptions); | |
} | |
} |