Image.Save

Save()

Salva i dati dell’immagine nel flusso sottostante.

public void Save()

Guarda anche


Save(string, ImageOptionsBase)

Salva i dati dell’oggetto nella posizione file specificata nel formato file specificato in base alle opzioni di salvataggio.

public virtual void Save(string filePath, ImageOptionsBase options)
ParametroTipoDescrizione
filePathStringIl percorso del file.
optionsImageOptionsBaseLe opzioni.

Esempi

L’esempio seguente mostra come esportare i file di Adobe Illustrator in formato PDF 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());
}

L’esempio seguente dimostra che AsposePSD supporta l’esportazione di file PSB in un formato PSD.

[C#]

// Supporta il salvataggio di PSB come PDF
string sourceFileName = "sample.psb";
string outFileName = "sample.pdf";

using (PsdImage image = (PsdImage)Image.Load(sourceFileName))
{
    image.Save(outFileName, new PdfOptions());
}

Il seguente codice salva PsdImage come documento PDF con testo selezionabile.

[C#]

// Il salvataggio di PSD in PDF non fornisce testo selezionabile
string sourceFileName = "text.psd";
string outFileName = "text.pdf";

using (PsdImage image = (PsdImage)Image.Load(sourceFileName))
{
    image.Save(outFileName, new PdfOptions());
}

L’esempio seguente mostra come esportare file AI in formato PSD e PNG 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 });
}

L’esempio seguente dimostra che l’allineamento del testo tramite ITextPortion per le lingue da destra a sinistra funziona correttamente.

[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);
}

Questo esempio mostra i semplici passaggi per salvare un’immagine. Per dimostrare questa operazione, carichiamo un file esistente da una posizione del disco, eseguiamo l’operazione di rotazione sull’immagine e salviamo l’immagine in formato file Jpeg utilizzando Percorso file

[C#]

//Crea un'istanza della classe immagine e inizializzala con un file esistente tramite Percorso file
using (Aspose.PSD.Image image = Aspose.PSD.Image.Load(@"C:\temp\image.psd"))
{
    //Ruota l'immagine di 180 gradi attorno all'asse X
    image.RotateFlip(Aspose.PSD.RotateFlipType.Rotate180FlipX);

    //Salva l'immagine come Jpeg nel percorso del file con le impostazioni JpegOptions predefinite
    image.Save(@"C:\temp\output.jpeg", new Aspose.PSD.ImageOptions.JpegOptions());
}

L’esempio seguente mostra come modificare la visibilità di LayerGroup in Aspose.PSD

[C#]

string sourceFilePath = "input.psd";
string outputFilePath = "output.psd";

// apportare modifiche ai nomi dei livelli e salvarlo
using (var image = (PsdImage)Image.Load(sourceFilePath))
{
    for (int i = 0; i < image.Layers.Length; i++)
    {
        var layer = image.Layers[i];

        // Disattiva tutto all'interno di un gruppo
        if (layer is LayerGroup)
        {
            layer.IsVisible = false;
        }
    }

    image.Save(outputFilePath);
}

L’esempio seguente mostra come disegnare su un livello appena creato se viene utilizzata la versione del costruttore semplice 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);

    // disegna un rettangolo con lo strumento Penna
    graphic.DrawRectangle(new Pen(Color.Red), new Rectangle(30, 10, 40, 80));

    // disegna un altro rettangolo con Solid Brush in colore blu
    graphic.DrawRectangle(new Pen(new SolidBrush(Color.Blue)), new Rectangle(10, 30, 80, 40));

    image.Save(outputFilePath);
}

L’esempio seguente dimostra che la lettura e il salvataggio dei file PSD a 16 bit in scala di grigi in RGB a 16 bit per canale funziona correttamente e senza eccezioni.

[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))
{
    // Qui non dovrebbero esserci eccezioni.
    image.Save(pngExportPath, new PngOptions() { ColorType = PngColorType.GrayscaleWithAlpha });
}

L’esempio seguente dimostra che la lettura e il salvataggio dei file PSD a 16 bit della scala di grigi nella scala di grigi a 8 bit per canale funziona correttamente e senza eccezioni.

[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))
{
    // Qui non dovrebbero esserci eccezioni.
    image.Save(pngExportPath, new PngOptions() { ColorType = PngColorType.GrayscaleWithAlpha });
}

L’esempio seguente mostra come utilizzare la modalità di fusione del livello PassThrough 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 });
}

L’esempio seguente dimostra che l’avanzamento della conversione del documento funziona correttamente e senza eccezioni.

[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
            });
}

L’esempio seguente dimostra che la lettura e il salvataggio dei file PSD a 16 bit in scala di grigi funziona correttamente e senza eccezioni.

[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))
    {
        // Qui non dovrebbero esserci eccezioni.
        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);

Guarda anche


Save(string, ImageOptionsBase, Rectangle)

Salva i dati dell’oggetto nella posizione file specificata nel formato file specificato in base alle opzioni di salvataggio.

public virtual void Save(string filePath, ImageOptionsBase options, Rectangle boundsRectangle)
ParametroTipoDescrizione
filePathStringIl percorso del file.
optionsImageOptionsBaseLe opzioni.
boundsRectangleRectangleL’immagine di destinazione delimita il rettangolo. Imposta il rettangolo vuoto per utilizzare i limiti di origine.

Eccezioni

eccezionecondizione
ArgumentNullExceptionopzioni
ImageSaveExceptionSalvataggio dell’immagine non riuscito.

Guarda anche


Save(Stream, ImageOptionsBase)

Salva i dati dell’immagine nel flusso specificato nel formato di file specificato in base alle opzioni di salvataggio.

public void Save(Stream stream, ImageOptionsBase optionsBase)
ParametroTipoDescrizione
streamStreamIl flusso in cui salvare i dati dell’immagine.
optionsBaseImageOptionsBaseLe opzioni di salvataggio.

Eccezioni

eccezionecondizione
ArgumentNullExceptionopzioniBase
ArgumentExceptionImpossibile salvare nel formato specificato perché al momento non è supportato.;optionsBase
ImageSaveExceptionEsportazione dell’immagine non riuscita.

Esempi

Questo esempio mostra il processo di salvataggio di un’immagine in MemoryStream. Per dimostrare questa operazione, l’esempio carica un file esistente da una posizione del disco, esegue l’operazione di rotazione sull’immagine e salva l’immagine in formato Gif

[C#]

//Crea un'istanza di MemoryStream
using (System.IO.MemoryStream stream = new System.IO.MemoryStream())
{
    //Crea un'istanza della classe immagine e inizializzala con un file esistente tramite Percorso file
    using (Aspose.PSD.Image image = Aspose.PSD.Image.Load(@"C:\temp\image.psd"))
    {
        //Ruota l'immagine di 180 gradi attorno all'asse X
        image.RotateFlip(Aspose.PSD.RotateFlipType.Rotate180FlipX);

        //Salva l'immagine come PSD in MemoryStream con le impostazioni GifOptions predefinite
        image.Save(stream, new Aspose.PSD.ImageOptions.GifOptions());
    }
}

Guarda anche


Save(Stream, ImageOptionsBase, Rectangle)

Salva i dati dell’immagine nel flusso specificato nel formato di file specificato in base alle opzioni di salvataggio.

public virtual void Save(Stream stream, ImageOptionsBase optionsBase, Rectangle boundsRectangle)
ParametroTipoDescrizione
streamStreamIl flusso in cui salvare i dati dell’immagine.
optionsBaseImageOptionsBaseLe opzioni di salvataggio.
boundsRectangleRectangleL’immagine di destinazione delimita il rettangolo. Imposta il rettangolo vuoto per utilizzare i limiti di origine.

Eccezioni

eccezionecondizione
ArgumentNullExceptionopzioniBase
ArgumentExceptionImpossibile salvare nel formato specificato perché al momento non è supportato.;optionsBase
ImageSaveExceptionEsportazione dell’immagine non riuscita.

Guarda anche