Създаване, Отваряне и Запазване на PSD файлове
Export на изображение в 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 и по-нови. Кодът по-долу създава 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. Aspose.PSD API предоставя ефективни и лесни за използване методи за постигане на тази цел. 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 (червен, зелен, син) порядък. Aspose.PSD API предоставя лесен за използване механизъм за достъп до ресурсите на 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 файлове
Aspose.PSD за Java API може да създаде индексирани 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(); | |
} |
Export на 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); | |
} | |
} |