Image.Save
Save()
Saves the image data to the underlying stream.
public void Save()
See Also
- class Image
- namespace Aspose.PSD
- assembly Aspose.PSD
Save(string, ImageOptionsBase)
Saves the object’s data to the specified file location in the specified file format according to save options.
public virtual void Save(string filePath, ImageOptionsBase options)
Parameter | Type | Description |
---|---|---|
filePath | String | The file path. |
options | ImageOptionsBase | The options. |
Examples
The following example demonstrates how you can export Adobe Illustrator files to PDF format in Aspose.PSD
[C#]
string sourceFilePath = "rect2_color.ai";
string outputFilePath = "rect2_color.ai_output.pdf";
using (AiImage image = (AiImage)Image.Load(sourceFilePath))
{
image.Save(outputFilePath, new PdfOptions());
}
The following example demonstrates that AsposePSD supports the PSB files exporting to a PSD format.
[C#]
// Support saving PSB as PDF
string sourceFileName = "sample.psb";
string outFileName = "sample.pdf";
using (PsdImage image = (PsdImage)Image.Load(sourceFileName))
{
image.Save(outFileName, new PdfOptions());
}
The following code saving PsdImage as PDF document with selectable text.
[C#]
// Saving PSD into PDF does not provide selectable text
string sourceFileName = "text.psd";
string outFileName = "text.pdf";
using (PsdImage image = (PsdImage)Image.Load(sourceFileName))
{
image.Save(outFileName, new PdfOptions());
}
The following example demonstrates how you can export AI file to PSD and PNG format in 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 });
}
The following example demonstrates that the Text Alignment through ITextPortion for right-to-left languages works correctly.
[C#]
string sourceFilePath = "bidi.psd";
string exportFilePath = "bidiOutput.psd";
using (PsdImage image = (PsdImage)Image.Load(sourceFilePath))
{
TextLayer layer = (TextLayer)image.Layers[2];
ITextPortion[] portions = layer.TextData.Items;
portions[0].Paragraph.Justification = JustificationMode.Center;
layer.TextData.UpdateLayerData();
image.Save(exportFilePath);
}
This example shows the simple steps to Save an Image. To demonstrate this operation, we load an existing file from some disk location, performs Rotate operation on the image and Save the image in Jpeg file format using File Path
[C#]
//Create an instance of image class and initialize it with an existing file through File path
using (Aspose.PSD.Image image = Aspose.PSD.Image.Load(@"C:\temp\image.psd"))
{
//Rotate the image at 180 degree about X axis
image.RotateFlip(Aspose.PSD.RotateFlipType.Rotate180FlipX);
//Save the Image as Jpeg to File Path with default JpegOptions settings
image.Save(@"C:\temp\output.jpeg", new Aspose.PSD.ImageOptions.JpegOptions());
}
The following example demonstrates how you can change LayerGroup visibility in Aspose.PSD
[C#]
string sourceFilePath = "input.psd";
string outputFilePath = "output.psd";
// make changes in layer names and save it
using (var image = (PsdImage)Image.Load(sourceFilePath))
{
for (int i = 0; i < image.Layers.Length; i++)
{
var layer = image.Layers[i];
// Turn off everything inside a group
if (layer is LayerGroup)
{
layer.IsVisible = false;
}
}
image.Save(outputFilePath);
}
The following example demonstrates how you can draw on a newly created layer if the simple constructor version is used in Aspose.PSD
[C#]
string outputFilePath = "output.psd";
int width = 100;
int height = 100;
using (var image = new PsdImage(width, height))
{
var layer = new Layer();
layer.Bottom = height;
layer.Right = width;
image.AddLayer(layer);
Graphics graphic = new Graphics(layer);
graphic.Clear(Color.Yellow);
// draw a rectangle with Pen tool
graphic.DrawRectangle(new Pen(Color.Red), new Rectangle(30, 10, 40, 80));
// draw another rectangle with Solid Brush in Blue color
graphic.DrawRectangle(new Pen(new SolidBrush(Color.Blue)), new Rectangle(10, 30, 80, 40));
image.Save(outputFilePath);
}
The following example demonstrates that reading and saving the Grayscale 16 bit PSD files to 16bit per channel RGB works correctly and without an exception.
[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))
{
// Here should be no exception.
image.Save(pngExportPath, new PngOptions() { ColorType = PngColorType.GrayscaleWithAlpha });
}
The following example demonstrates that reading and saving the Grayscale 16 bit PSD files to 8 bit per channel Grayscale works correctly and without an exception.
[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))
{
// Here should be no exception.
image.Save(pngExportPath, new PngOptions() { ColorType = PngColorType.GrayscaleWithAlpha });
}
The following example demonstrates how you can use the PassThrough layer blend mode in 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 });
}
The following example demonstrates that the document conversion progress works correctly and without an exception.
[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
});
}
The following example demonstrates that reading and saving the Grayscale 16 bit PSD files works correctly and without an exception.
[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))
{
// Here should be no exception.
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);
See Also
- class ImageOptionsBase
- class Image
- namespace Aspose.PSD
- assembly Aspose.PSD
Save(string, ImageOptionsBase, Rectangle)
Saves the object’s data to the specified file location in the specified file format according to save options.
public virtual void Save(string filePath, ImageOptionsBase options, Rectangle boundsRectangle)
Parameter | Type | Description |
---|---|---|
filePath | String | The file path. |
options | ImageOptionsBase | The options. |
boundsRectangle | Rectangle | The destination image bounds rectangle. Set the empty rectangle for use sourse bounds. |
Exceptions
exception | condition |
---|---|
ArgumentNullException | options |
ImageSaveException | Image saving failed. |
See Also
- class ImageOptionsBase
- struct Rectangle
- class Image
- namespace Aspose.PSD
- assembly Aspose.PSD
Save(Stream, ImageOptionsBase)
Saves the image’s data to the specified stream in the specified file format according to save options.
public void Save(Stream stream, ImageOptionsBase optionsBase)
Parameter | Type | Description |
---|---|---|
stream | Stream | The stream to save the image’s data to. |
optionsBase | ImageOptionsBase | The save options. |
Exceptions
exception | condition |
---|---|
ArgumentNullException | optionsBase |
ArgumentException | Cannot save to the specified format as it is not supported at the moment.;optionsBase |
ImageSaveException | Image export failed. |
Examples
This example shows the process of Saving an Image to MemoryStream. To demonstrate this operation, example loads an existing file from some disk location, performs Rotate operation on the image and Save the image in Gif format
[C#]
//Create an instance of MemoryStream
using (System.IO.MemoryStream stream = new System.IO.MemoryStream())
{
//Create an instance of image class and initialize it with an existing file through File path
using (Aspose.PSD.Image image = Aspose.PSD.Image.Load(@"C:\temp\image.psd"))
{
//Rotate the image at 180 degree about X axis
image.RotateFlip(Aspose.PSD.RotateFlipType.Rotate180FlipX);
//Save the Image as PSD to MemoryStream with default GifOptions settings
image.Save(stream, new Aspose.PSD.ImageOptions.GifOptions());
}
}
See Also
- class ImageOptionsBase
- class Image
- namespace Aspose.PSD
- assembly Aspose.PSD
Save(Stream, ImageOptionsBase, Rectangle)
Saves the image’s data to the specified stream in the specified file format according to save options.
public virtual void Save(Stream stream, ImageOptionsBase optionsBase, Rectangle boundsRectangle)
Parameter | Type | Description |
---|---|---|
stream | Stream | The stream to save the image’s data to. |
optionsBase | ImageOptionsBase | The save options. |
boundsRectangle | Rectangle | The destination image bounds rectangle. Set the empty rectangle for use source bounds. |
Exceptions
exception | condition |
---|---|
ArgumentNullException | optionsBase |
ArgumentException | Cannot save to the specified format as it is not supported at the moment.;optionsBase |
ImageSaveException | Image export failed. |
See Also
- class ImageOptionsBase
- struct Rectangle
- class Image
- namespace Aspose.PSD
- assembly Aspose.PSD