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[] families = col.Families; string defaultFontName = families[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 图像查看器的兼容性的选项。 请注意,Compact Framework 平台不支持绘制到最终布局的文本层 |
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() | 处理当前实例。 |
例子
以下示例演示如何在 Aspose.PSD 中将 AI 文件导出为 PSD 和 PNG 格式
[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 });
}
此示例在 PsdOptions 实例的 Source 属性指定的某个磁盘位置创建一个新的图像文件。在创建实际图像之前设置 PsdOptions 实例的几个属性。特别是 Source 属性,在这种情况下指的是实际磁盘位置。
[C#]
//创建 PsdOptions 实例并设置其各种属性
Aspose.PSD.ImageOptions.PsdOptions psdOptions = new Aspose.PSD.ImageOptions.PsdOptions();
//创建 FileCreateSource 的实例并将其指定为 PsdOptions 实例的源
//第二个布尔参数确定要创建的文件是否为IsTemporal
psdOptions.Source = new Aspose.PSD.Sources.FileCreateSource(@"C:\temp\sample.psd", false);
//创建Image的实例并通过调用Create方法用PsdOptions的实例初始化它
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 });
}
以下示例演示了如何在 Aspose.PSD 中使用 PassThrough 图层混合模式
[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
});
}
此示例显示如何加载类型颜色数组中的像素信息、操作数组并将其设置回图像。为执行这些操作,此示例使用 MemoryStream 对象创建了一个新的图像文件(PSD 格式)。
[C#]
//创建一个内存流实例
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