Создание, открытие и сохранение изображений
Создание файлов изображений
Aspose.PSD для .NET позволяет разработчикам создавать собственные изображения. Используйте статический метод Create, предоставленный классом Image, для создания новых изображений. Все, что вам нужно сделать, это предоставить соответствующий объект одного из классов из пространства имен ImageOptions для нужного формата выходного изображения. Чтобы создать файл изображения, сначала создайте экземпляр одного из классов из пространства имен ImageOptions. Эти классы определяют формат выходного изображения. Ниже перечислены некоторые классы из пространства имен ImageOptions (обратите внимание, что в настоящее время поддерживаются только семейства форматов файлов PSD для создания):
PsdOptions устанавливает параметры для создания файла PSD. Файлы изображений могут быть созданы путем установки пути вывода или установки потока.
Создание с указанием пути
Создайте PsdOptions из ImageOptions и установите различные свойства. Самое важное свойство для установки - это свойство Source. Это свойство указывает, где находятся данные изображения (в файле или потоке). В приведенном ниже примере источником является файл. После установки свойств передайте объект одному из статических методов Create вместе с параметрами ширины и высоты. Ширина и высота определяются в пикселях.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Creates an instance of PsdOptions and set its various properties | |
PsdOptions psdOptions = new PsdOptions(); | |
psdOptions.CompressionMethod = CompressionMethod.RLE; | |
// Define the source property for the instance of PsdOptions. Second boolean parameter determines if the file is temporal or not | |
psdOptions.Source = new FileCreateSource(desName, false); | |
// Creates an instance of Image and call Create method by passing the PsdOptions object | |
using (Image image = Image.Create(psdOptions, 500, 500)) | |
{ | |
image.Save(); | |
} |
Создание с использованием потока
Процесс создания изображения с использованием потока такой же, как при использовании пути. Единственное отличие в том, что вам нужно создать экземпляр StreamSource, передав объект Stream в его конструктор и присвоив его свойству Source.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string desName = dataDir + "CreatingImageUsingStream_out.bmp"; | |
// Creates an instance of BmpOptions and set its various properties | |
BmpOptions ImageOptions = new BmpOptions(); | |
ImageOptions.BitsPerPixel = 24; | |
// Create an instance of System.IO.Stream | |
Stream stream = new FileStream(dataDir + "sample_out.bmp", FileMode.Create); | |
// Define the source property for the instance of BmpOptions Second boolean parameter determines if the Stream is disposed once get out of scope | |
ImageOptions.Source = new StreamSource(stream, true); | |
// Creates an instance of Image and call Create method by passing the BmpOptions object | |
using (Image image = Image.Create(ImageOptions, 500, 500)) | |
{ | |
// Do some image processing | |
image.Save(desName); | |
} |
Открытие файлов изображений
Разработчики могут использовать API Aspose.PSD для .NET для открытия существующих файлов изображений PSD для различных целей, таких как добавление эффектов на изображение или преобразование существующего файла в другой формат. Независимо от цели, Aspose.PSD предоставляет два стандартных способа открытия существующих файлов: из файла или из потока.
Открытие с диска
Откройте файл изображения, передав путь и имя файла в качестве параметра в статический метод Load, предоставляемый классом Image.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + "result.png"; | |
// load PSD image and replace the non found fonts. | |
using (Image image = Image.Load(sourceFile)) | |
{ | |
PsdImage psdImage = (PsdImage)image; | |
psdImage.Save(destName, new PngOptions()); | |
} |
Открытие с использованием потока
Иногда изображение, которое необходимо открыть, хранится как поток. В таких случаях используйте перегруженную версию метода Load. Он принимает объект Stream в качестве аргумента для открытия изображения.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + "result.png"; | |
FileStream fStream = new FileStream(sourceFile, FileMode.Open); | |
fStream.Position = 0; | |
// load PSD image and replace the non found fonts. | |
using (Image image = Image.Load(fStream)) | |
{ | |
PsdImage psdImage = (PsdImage)image; | |
MemoryStream stream = new MemoryStream(); | |
psdImage.Save(stream, new PngOptions()); | |
} |
Загрузка изображения как слой
Эта статья демонстрирует использование Aspose.PSD для загрузки изображения как слоя. API Aspose.PSD предоставляет эффективные и простые в использовании методы для достижения этой цели. Aspose.PSD выставил метод AddLayer класса PsdImage для добавления изображения в файл PSD в качестве слоя.
Шаги загрузки изображения в PSD как слоя настолько просты, как указано ниже:
- Создайте экземпляр изображения, используя класс PsdImage с указанной шириной и высотой.
- Загрузите файл PSD как изображение, используя фабричный метод Load, предоставленный классом Image.
- Создайте экземпляр класса Layer и присвойте ему слой изображения PSD.
- Добавьте созданный слой с помощью метода AddLayer, предоставленного классом PsdImage.
- Сохраните результат.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string filePath = dataDir + "PsdExample.psd"; | |
string outputFilePath = dataDir + "PsdResult.psd"; | |
using (var image = new PsdImage(200, 200)) | |
{ | |
using (var im = Image.Load(filePath)) | |
{ | |
Layer layer = null; | |
try | |
{ | |
layer = new Layer((RasterImage)im); | |
image.AddLayer(layer); | |
} | |
catch (Exception e) | |
{ | |
if (layer != null) | |
{ | |
layer.Dispose(); | |
} | |
throw; | |
} | |
} | |
image.Save(outputFilePath); | |
} |
Загрузка изображения как слоя из потока
Эта статья демонстрирует использование Aspose.PSD для загрузки изображения как слоя из потока. Чтобы загрузить изображение из потока, просто передайте объект потока, содержащий изображение, в конструктор класса Layer. Добавьте созданный слой, используя метод AddLayer, предоставленный классом PsdImage, и сохраните результат.
Вот пример кода.
// 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); | |
} |
Сохранение файлов изображений
Aspose.PSD позволяет создавать файлы изображений с нуля. Он также предоставляет средства для редактирования существующих файлов изображений. После создания или изменения изображения файл обычно сохраняется на диск. Aspose.PSD предоставляет вам методы для сохранения изображений на диск, указывая путь или используя объект Stream.
Сохранение на диск
Класс Image представляет объект изображения, поэтому этот класс предоставляет все необходимые инструменты для создания, загрузки и сохранения файла изображения. Используйте метод Save класса Image для сохранения изображений. Одну из перегруженных версий метода Save можно использовать с местоположением файла, указанным в виде строки.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + "result.png"; | |
// load PSD image and replace the non found fonts. | |
using (Image image = Image.Load(sourceFile)) | |
{ | |
PsdImage psdImage = (PsdImage)image; | |
psdImage.Save(destName, new PngOptions()); | |
} |
Сохранение в поток
Другая перегруженная версия метода Save принимает объект Stream в качестве аргумента и сохраняет файл изображения в поток.
Если изображение создается, указав любые из CreateOptions в конструкторе Image, изображение автоматически сохраняется по пути или потоку, указанному во время инициализации класса Image, вызывая метод Save, который не принимает никаких параметров.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + "result.png"; | |
// load PSD image and replace the non found fonts. | |
using (Image image = Image.Load(sourceFile)) | |
{ | |
PsdImage psdImage = (PsdImage)image; | |
MemoryStream stream = new MemoryStream(); | |
psdImage.Save(stream, new PngOptions()); | |
} |
Настройка для замены отсутствующих шрифтов
Разработчики могут использовать API Aspose.PSD для .NET для загрузки существующих файлов изображений PSD для различных целей, например, для задания имени шрифта по умолчанию при сохранении документов PSD в растровое изображение (в форматах PNG, JPG и BMP). Этот шрифт по умолчанию должен использоваться в качестве замены для всех отсутствующих шрифтов (шрифтов, которые не найдены в текущей операционной системе). После изменения изображения файл будет сохранен на диск.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFileName = "sample_konstanting.psd"; | |
string[] outputs = new string[] | |
{ | |
"replacedfont0.tiff", | |
"replacedfont1.png", | |
"replacedfont2.jpg" | |
}; | |
using (PsdImage image = (PsdImage)Image.Load(sourceFileName, new PsdLoadOptions())) | |
{ | |
// This way you can use different fonts for different outputs | |
image.Save(outputs[0], new TiffOptions(TiffExpectedFormat.TiffJpegRgb) { DefaultReplacementFont = "Arial" }); | |
image.Save(outputs[1], new PngOptions { DefaultReplacementFont = "Verdana" }); | |
image.Save(outputs[2], new JpegOptions { DefaultReplacementFont = "Times New Roman" }); | |
} |