Class PsdOptions
PsdOptions class
Параметры создания файла формата psd.
public class PsdOptions : ImageOptionsBase
Конструкторы
Имя | Описание |
---|---|
PsdOptions() | Инициализирует новый экземплярPsdOptions класс. |
PsdOptions(PsdImage) | Инициализирует новый экземплярPsdOptions класс. |
PsdOptions(PsdOptions) | Инициализирует новый экземплярPsdOptions класс. |
Характеристики
Имя | Описание |
---|---|
BufferSizeHint { get; set; } | Получает или задает подсказку о размере буфера, которая определяет максимально допустимый размер для всех внутренних буферов. |
ChannelBitsCount { get; set; } | Получает или задает количество битов на цветовой канал. |
ChannelsCount { get; set; } | Получает или задает количество цветовых каналов. |
ColorMode { get; set; } | Получает или задает цветовой режим PSD. |
CompressionMethod { get; set; } | Получает или задает метод сжатия psd. |
virtual DefaultReplacementFont { get; set; } | Получает или устанавливает шрифт замены по умолчанию (шрифт, который будет использоваться для рисования текста при экспорте в растр, если существующий шрифт слоя в файле PSD не представлен в системе). Чтобы взять правильное имя шрифта по умолчанию, можно использовать следующий фрагмент кода : System.Drawing.Text.InstalledFontCollection col = new System.Drawing.Text.InstalledFontCollection(); System.Drawing.FontFamily[] семейства = col.Families; string defaultFontName = семейства[0].Name; PsdLoadOptions psdLoadOptions = new PsdLoadOptions() { DefaultReplacementFont = defaultFontName }); |
Disposed { get; } | Получает значение, указывающее, удален ли этот экземпляр. |
FullFrame { get; set; } | Получает или задает значение, указывающее, является ли [полный кадр]. |
MultiPageOptions { get; set; } | Многостраничные параметры |
virtual Palette { get; set; } | Получает или задает цветовую палитру. |
ProgressEventHandler { get; set; } | Получает или задает обработчик события выполнения. |
PsdVersion { get; set; } | Получает или задает версию формата файла. Это может быть PSD или PSB. |
RefreshImagePreviewData { get; set; } | Получает или задает значение, указывающее, используется ли параметр [обновить данные предварительного просмотра изображения] для обеспечения максимальной совместимости с другими средствами просмотра изображений PSD. |
RemoveGlobalTextEngineResource { get; set; } | Получает или задает значение, указывающее: - Удалить глобальный ресурс текстового движка - Используется для некоторых текстовых файлов psd, только в том случае, когда их нельзя открыть в Adobe Photoshop после обработки (в основном для отсутствующих шрифтов, связанных с текстовыми слоями). После использования этой опции пользователю необходимо сделать следующее в открытом в Photoshop файле: Меню “Текст” -> “Обработать отсутствующие шрифты”. После этой операции весь текст снова появится. Обратите внимание, что эта операция может вызвать некоторые окончательные изменения макета. |
virtual ResolutionSettings { get; set; } | Получает или задает параметры разрешения. |
Resources { get; set; } | Получает или задает ресурсы PSD. |
Source { get; set; } | Получает или задает источник для создания изображения в. |
VectorRasterizationOptions { get; set; } | Получает или задает параметры векторной растеризации. |
Version { get; set; } | Получает или задает версию файла psd. |
override XmpData { get; set; } | Получить или установить контейнер данных XMP |
Методы
Имя | Описание |
---|---|
virtual Clone() | Клонирует этот экземпляр. |
Dispose() | Удаляет текущий экземпляр. |
Примеры
В следующем примере показано, как вы можете экспортировать файл AI в формат PSD и PNG в Aspose.PSD.
[C#]
string sourceFileName = "form_8.ai";
string outputFileName = "form_8_export";
using (AiImage image = (AiImage)Image.Load(sourceFileName))
{
image.Save(outputFileName + ".psd", new PsdOptions());
image.Save(outputFileName + ".png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}
В этом примере создается новый файл изображения в некотором месте на диске, как указано в свойстве Source экземпляра PsdOptions. Несколько свойств экземпляра PsdOptions задаются перед созданием фактического образа. Особенно свойство Source, которое в данном случае относится к фактическому местоположению на диске.
[C#]
//Создаем экземпляр PsdOptions и устанавливаем его различные свойства
Aspose.PSD.ImageOptions.PsdOptions psdOptions = new Aspose.PSD.ImageOptions.PsdOptions();
//Создаем экземпляр FileCreateSource и назначаем его в качестве источника для экземпляра PsdOptions
//Второй логический параметр определяет, является ли создаваемый файл временным или нет
psdOptions.Source = new Aspose.PSD.Sources.FileCreateSource(@"C:\temp\sample.psd", false);
//Создаем экземпляр Image и инициализируем его экземпляром PsdOptions, вызвав метод Create
using (Aspose.PSD.Image image = Aspose.PSD.Image.Create(psdOptions, 500, 500))
{
// делаем некоторую обработку изображения
// сохранить все изменения
image.Save();
}
В следующем примере показано, что чтение и сохранение 16-битных PSD-файлов в оттенках серого в 16-битных на канал RGB работает правильно и без исключений.
[C#]
string sourceFilePath = "grayscale5x5.psd";
string exportFilePath = "rgb16bit5x5.psd";
PsdOptions psdOptions = new PsdOptions()
{
ColorMode = ColorModes.Rgb,
ChannelBitsCount = 16,
ChannelsCount = 4
};
using (PsdImage image = (PsdImage)Image.Load(sourceFilePath))
{
RasterCachedImage raster = image.Layers[0];
Aspose.PSD.Graphics graphics = new Graphics(raster);
int width = raster.Width;
int height = raster.Height;
Rectangle rect = new Rectangle(width / 3, height / 3, width - (2 * (width / 3)) - 1, height - (2 * (height / 3)) - 1);
graphics.DrawRectangle(new Aspose.PSD.Pen(Color.DarkGray, 1), rect);
image.Save(exportFilePath, psdOptions);
}
string pngExportPath = Path.ChangeExtension(exportFilePath, "png");
using (PsdImage image = (PsdImage)Image.Load(exportFilePath))
{
// Здесь не должно быть исключений.
image.Save(pngExportPath, new PngOptions() { ColorType = PngColorType.GrayscaleWithAlpha });
}
В следующем примере показано, что чтение и сохранение 16-битных файлов PSD в оттенках серого в 8-битных оттенках серого на канал работает правильно и без исключений.
[C#]
string sourceFilePath = "grayscale16bit.psd";
string exportFilePath = "grayscale16bit_Grayscale8_2_RLE.psd";
PsdOptions psdOptions = new PsdOptions()
{
ColorMode = ColorModes.Grayscale,
ChannelBitsCount = 8,
ChannelsCount = 2
};
using (PsdImage image = (PsdImage)Image.Load(sourceFilePath))
{
RasterCachedImage raster = image.Layers[0];
Aspose.PSD.Graphics graphics = new Graphics(raster);
int width = raster.Width;
int height = raster.Height;
Rectangle rect = new Rectangle(width / 3, height / 3, width - (2 * (width / 3)) - 1, height - (2 * (height / 3)) - 1);
graphics.DrawRectangle(new Aspose.PSD.Pen(Color.DarkGray, 1), rect);
image.Save(exportFilePath, psdOptions);
}
string pngExportPath = Path.ChangeExtension(exportFilePath, "png");
using (PsdImage image = (PsdImage)Image.Load(exportFilePath))
{
// Здесь не должно быть исключений.
image.Save(pngExportPath, new PngOptions() { ColorType = PngColorType.GrayscaleWithAlpha });
}
В следующем примере показано, как можно использовать режим наложения слоя PassThrough в Aspose.PSD.
[C#]
string sourceFileName = "Apple.psd";
string outputFileName = "OutputApple";
using (PsdImage image = (PsdImage)Image.Load(sourceFileName))
{
if (image.Layers.Length < 23)
{
throw new Exception("There is not 23rd layer.");
}
var layer = image.Layers[23] as LayerGroup;
if (layer == null)
{
throw new Exception("The 23rd layer is not a layer group.");
}
if (layer.Name != "AdjustmentGroup")
{
throw new Exception("The 23rd layer name is not 'AdjustmentGroup'.");
}
if (layer.BlendModeKey != BlendMode.PassThrough)
{
throw new Exception("AdjustmentGroup layer should have 'pass through' blend mode.");
}
image.Save(outputFileName + ".psd", new PsdOptions(image));
image.Save(outputFileName + ".png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
layer.BlendModeKey = BlendMode.Normal;
image.Save(outputFileName + "Normal.psd", new PsdOptions(image));
image.Save(outputFileName + "Normal.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}
В следующем примере показано, что процесс преобразования документов работает правильно и без исключений.
[C#]
string sourceFilePath = "Apple.psd";
Stream outputStream = new MemoryStream();
Aspose.PSD.ProgressEventHandler localProgressEventHandler = delegate(ProgressEventHandlerInfo progressInfo)
{
string message = string.Format(
"{0} {1}: {2} out of {3}",
progressInfo.Description,
progressInfo.EventType,
progressInfo.Value,
progressInfo.MaxValue);
Console.WriteLine(message);
};
Console.WriteLine("---------- Loading Apple.psd ----------");
var loadOptions = new PsdLoadOptions() { ProgressEventHandler = localProgressEventHandler };
using (PsdImage image = (PsdImage)Image.Load(sourceFilePath, loadOptions))
{
Console.WriteLine("---------- Saving Apple.psd to PNG format ----------");
image.Save(
outputStream,
new PngOptions()
{
ColorType = PngColorType.Truecolor,
ProgressEventHandler = localProgressEventHandler
});
Console.WriteLine("---------- Saving Apple.psd to PSD format ----------");
image.Save(
outputStream,
new PsdOptions()
{
ColorMode = ColorModes.Rgb,
ChannelsCount = 4,
ProgressEventHandler = localProgressEventHandler
});
}
В этом примере показано, как загрузить информацию о пикселях в массив цвета типа, манипулировать массивом и установить его обратно в изображение. Для выполнения этих операций в этом примере создается новый файл изображения (в формате PSD) с использованием объекта MemoryStream.
[C#]
//Создаем экземпляр MemoryStream
using (System.IO.MemoryStream stream = new System.IO.MemoryStream())
{
//Создаем экземпляр PsdOptions и устанавливаем его различные свойства, включая свойство Source
Aspose.PSD.ImageOptions.PsdOptions psdOptions = new Aspose.PSD.ImageOptions.PsdOptions();
psdOptions.Source = new Aspose.PSD.Sources.StreamSource(stream);
//Создаем экземпляр изображения
using (Aspose.PSD.RasterImage image = (Aspose.PSD.RasterImage)Aspose.PSD.Image.Create(psdOptions, 500, 500))
{
//Получить пиксели изображения, указав область в качестве границы изображения
Aspose.PSD.Color[] pixels = image.LoadPixels(image.Bounds);
// Цикл по массиву и установка цвета альтернативного индексированного пикселя
for (int index = 0; index < pixels.Length; index++)
{
if (index % 2 == 0)
{
//Устанавливаем желтый цвет индексированного пикселя
pixels[index] = Aspose.PSD.Color.Yellow;
}
else
{
//Устанавливаем синий цвет индексированного пикселя
pixels[index] = Aspose.PSD.Color.Blue;
}
}
// Применяем изменения пикселей к изображению
image.SavePixels(image.Bounds, pixels);
// сохранить все изменения.
image.Save();
}
//Запись потока памяти в файл
stream.WriteTo(new System.IO.FileStream(@"C:\temp\output.psd", System.IO.FileMode.CreateNew));
}
В следующем примере показано, что чтение и сохранение 16-битных PSD-файлов в оттенках серого работает правильно и без исключений.
[C#]
Stack<string> outputFilePathStack = new Stack<string>();
void SaveToPsdThenLoadAndSaveToPng(
string file,
ColorModes colorMode,
short channelBitsCount,
short channelsCount,
CompressionMethod compression,
int layerNumber)
{
string filePath = file + ".psd";
string postfix = colorMode.ToString() + channelBitsCount + "_" + channelsCount + "_" + compression;
string exportPath = file + postfix + ".psd";
PsdOptions psdOptions = new PsdOptions()
{
ColorMode = colorMode,
ChannelBitsCount = channelBitsCount,
ChannelsCount = channelsCount,
CompressionMethod = compression
};
using (PsdImage image = (PsdImage)Image.Load(filePath))
{
RasterCachedImage raster = layerNumber >= 0 ? (RasterCachedImage)image.Layers[layerNumber] : image;
Aspose.PSD.Graphics graphics = new Graphics(raster);
int width = raster.Width;
int height = raster.Height;
Rectangle rect = new Rectangle(
width / 3,
height / 3,
width - (2 * (width / 3)) - 1,
height - (2 * (height / 3)) - 1);
graphics.DrawRectangle(new Aspose.PSD.Pen(Color.DarkGray, 1), rect);
image.Save(exportPath, psdOptions);
}
string pngExportPath = Path.ChangeExtension(exportPath, "png");
using (PsdImage image = (PsdImage)Image.Load(exportPath))
{
// Здесь не должно быть исключений.
image.Save(pngExportPath, new PngOptions() { ColorType = PngColorType.GrayscaleWithAlpha });
}
outputFilePathStack.Push(exportPath);
}
SaveToPsdThenLoadAndSaveToPng("grayscale5x5", ColorModes.Cmyk, 16, 5, CompressionMethod.RLE, 0);
SaveToPsdThenLoadAndSaveToPng("argb16bit_5x5", ColorModes.Grayscale, 16, 2, CompressionMethod.RLE, 0);
SaveToPsdThenLoadAndSaveToPng("argb16bit_5x5_no_layers", ColorModes.Grayscale, 16, 2, CompressionMethod.RLE, -1);
SaveToPsdThenLoadAndSaveToPng("argb8bit_5x5", ColorModes.Grayscale, 16, 2, CompressionMethod.RLE, 0);
SaveToPsdThenLoadAndSaveToPng("argb8bit_5x5_no_layers", ColorModes.Grayscale, 16, 2, CompressionMethod.RLE, -1);
SaveToPsdThenLoadAndSaveToPng("cmyk16bit_5x5_no_layers", ColorModes.Grayscale, 16, 2, CompressionMethod.RLE, -1);
SaveToPsdThenLoadAndSaveToPng("index8bit_5x5", ColorModes.Grayscale, 16, 2, CompressionMethod.RLE, -1);
Смотрите также
- class ImageOptionsBase
- пространство имен Aspose.PSD.ImageOptions
- сборка Aspose.PSD