Note sulla versione di Aspose.PSD per .NET 19.11

Chiave Sommario Categoria
PSDNET-151 Supporto dell’Effetto ombra interna in un Livello Funzionalità
PSDNET-135 Implementazione della resa di un Livello di Riempimento: Pattern Funzionalità
PSDNET-187 Supporto delle Immagini raster nei File in Formato AI Funzionalità
PSDNET-225 Ottenere proprietà della formattazione inline di un Livello di testo Funzionalità
PSDNET-214 Esportazione non corretta di un file PSD in altri formati se contiene Effetti del Livello e Livelli di Regolazione Errore

Modifiche nell’API Pubblica

API Aggiunte:

  • T:Aspose.PSD.FileFormats.Ai.AiSezione
  • M:Aspose.PSD.FileFormats.Ai.AiSezione.GetData
  • P:Aspose.PSD.FileFormats.Ai.AiImmagine.Livelli
  • M:Aspose.PSD.FileFormats.Ai.AiImmagine.AggiungiLivello(Aspose.PSD.FileFormats.Ai.AiSezioneLivello)
  • T:Aspose.PSD.FileFormats.Ai.AiSezioneLivello
  • P:Aspose.PSD.FileFormats.Ai.AiSezioneLivello.ImmaginiRaster
  • M:Aspose.PSD.FileFormats.Ai.AiSezioneLivello.AggiungiImmagineRaster(Aspose.PSD.FileFormats.Ai.AiSezioneImmagineRaster)
  • T:Aspose.PSD.FileFormats.Ai.AiSezioneImmagineRaster
  • P:Aspose.PSD.FileFormats.Ai.AiSezioneImmagineRaster.Nome
  • P:Aspose.PSD.FileFormats.Ai.AiSezioneImmagineRaster.Pixel
  • P:Aspose.PSD.FileFormats.Ai.AiSezioneImmagineRaster.RettangoloImmagine
  • P:Aspose.PSD.FileFormats.Ai.AiSezioneImmagineRaster.OffsetX
  • P:Aspose.PSD.FileFormats.Ai.AiSezioneImmagineRaster.OffsetY
  • P:Aspose.PSD.FileFormats.Ai.AiSezioneImmagineRaster.Larghezza
  • P:Aspose.PSD.FileFormats.Ai.AiSezioneImmagineRaster.Angle
  • P:Aspose.PSD.FileFormats.Ai.AiSezioneImmagineRaster.SpostamentoInferioreSinistro
  • P:Aspose.PSD.FileFormats.Ai.AiSezioneImmagineRaster.Altezza
  • M:Aspose.PSD.FileFormats.Psd.Livelli.EffettiLivello.BlendingOptions.AggiungiOmbraInterna
  • T:Aspose.PSD.FileFormats.Psd.Livelli.EffettiLivello.EffettoOmbraInterna
  • P:Aspose.PSD.FileFormats.Psd.Livelli.EffettiLivello.EffettoOmbraInterna.Colore
  • P:Aspose.PSD.FileFormats.Psd.Livelli.EffettiLivello.EffettoOmbraInterna.ModoMiscelazione
  • P:Aspose.PSD.FileFormats.Psd.Livelli.EffettiLivello.EffettoOmbraInterna.Visibile
  • P:Aspose.PSD.FileFormats.Psd.Livelli.EffettiLivello.EffettoOmbraInterna.Opacità
  • P:Aspose.PSD.FileFormats.Psd.Livelli.EffettiLivello.EffettoOmbraInterna.Angolo
  • P:Aspose.PSD.FileFormats.Psd.Livelli.EffettiLivello.EffettoOmbraInterna.UsaLuceGlobal
  • P:Aspose.PSD.FileFormats.Psd.Livelli.EffettiLivello.EffettoOmbraInterna.Distanza
  • P:Aspose.PSD.FileFormats.Psd.Livelli.EffettiLivello.EffettoOmbraInterna.Diffusione
  • P:Aspose.PSD.FileFormats.Psd.Livelli.EffettiLivello.EffettoOmbraInterna.Dimensioen
  • P:Aspose.PSD.FileFormats.Psd.Livelli.EffettiLivello.EffettoOmbraInterna.Rumore
  • T:Aspose.PSD.FileFormats.Psd.Livelli.Effetti.IShadowEffect
  • P:Aspose.PSD.FileFormats.Psd.Livelli.Effetti.IShadowEffect.Colore
  • P:Aspose.PSD.FileFormats.Psd.Livelli.Effetti.IShadowEffect.Angolo
  • P:Aspose.PSD.FileFormats.Psd.Livelli.Effetti.IShadowEffect.UsaLuceGlobal
  • P:Aspose.PSD.FileFormats.Psd.Livelli.Effetti.IShadowEffect.Distanza
  • P:Aspose.PSD.FileFormats.Psd.Livelli.Effetti.IShadowEffect.Diffusione
  • P:Aspose.PSD.FileFormats.Psd.Livelli.Effetti.IShadowEffect.Dimensioen
  • P:Aspose.PSD.FileFormats.Psd.Livelli.Effetti.IShadowEffect.Rumore
  • M:Aspose.PSD.FileFormats.Psd.Livelli.Testo.GetFonts
  • P:Aspose.PSD.FileFormats.Psd.Livelli.Testo.ITextStyle.FontIndex
  • T:Aspose.PSD.FileFormats.Psd.Livelli.Testo.TextFontInfo
  • P:Aspose.PSD.FileFormats.Psd.Livelli.Testo.TextFontInfo.FormatoFont
  • P:Aspose.PSD.FileFormats.Psd.Livelli.Testo.TextFontInfo.Scrittura
  • P:Aspose.PSD.FileFormats.Psd.Livelli.Testo.TextFontInfo.Sintetico
  • P:Aspose.PSD.FileFormats.Psd.Livelli.Testo.TextFontInfo.NomePostScript
  • P:Aspose.PSD.FileFormats.Psd.Livelli.Testo.TextFontInfo.NomeFamiglia
  • P:Aspose.PSD.FileFormats.Psd.Livelli.Testo.TextFontInfo.Stile

API Rimosse:

  • M:Aspose.PSD.FileFormats.Ai.SezioneFinaleAi.GetData
  • M:Aspose.PSD.FileFormats.Ai.SezioneImpostazioni.GetData

Esempi di utilizzo:

PSDNET-151. Supporto dell’Effetto ombra interna in un Livello

            string nomeFile = "esempio.psd";

            string nomeDestinazione = "esempio_out.psd";

            var opzioniCaricamento = new OpzioniCaricamentoPsd()

            {

                CaricaRisorseEffetti = true

            };

            // Carica un'immagine esistente in un'istanza della classe PsdImage

            using (var immagine = (PsdImage)Image.Load(nomeFile, opzioniCaricamento))

            {

                var livello = immagine.Livelli[immagine.Livelli.Length - 1];

                var effettoOmbra = (IShadowEffect)livello.BlendingOptions.Effetti[0];

                effettoOmbra.Colore = Color.Verde;

                effettoOmbra.Opacità = 128;

                effettoOmbra.Distanza = 1;

                effettoOmbra.UsaLuceGlobal = false;

                effettoOmbra.Dimensione = 2;

                effettoOmbra.Angolo = 45;

                effettoOmbra.Diffusione = 50;

                effettoOmbra.Rumore = 5;

                immagine.Save(nomeDestinazione, new OpzioniPsd(immagine));

            }

PSDNET-135. Implementazione della resa di un Livello di Riempimento: Pattern

            string nomeFile = "esempio.psd";
            string nomeDestinazione = "esempio_out.psd";
            // Carica un'immagine esistente in un'istanza della classe PsdImage

            using (var immagine = (PsdImage)Image.Load(nomeFile))

            {

                foreach (var livello in immagine.Livelli)

                {

                    if (livello is FillLayer)

                    {

                        var livelloRiempimento = (FillLayer)livello;

                        var impostazioni = (IPatternFillSettings)livelloRiempimento.ImpostazioniRiempimento;

                        impostazioni.OffsetOrizzontale = -5;

                        impostazioni.OffsetVerticale = 12;

                        impostazioni.Scala = 300;

                        impostazioni.Collegato = true;

                        impostazioni.DatiPattern = new int[]

                                                   {

                                                       Color.Nero.ToArgb(), Color.Rosso.ToArgb(),

                                                       Color.Verde.ToArgb(), Color.Blu.ToArgb(),

                                                       Color.Bianco.ToArgb(), Color.AzzurroChiaro.ToArgb(),

                                                       Color.Viola.ToArgb(), Color.Cioccolato.ToArgb(),

                                                       Color.RossoIndia.ToArgb(), Color.VerdeOlivaScuro.ToArgb(),

                                                       Color.BluCadetto.ToArgb(), Color.VerdeGiallo.ToArgb(),

                                                       Color.Nero.ToArgb(), Color.Azzurro.ToArgb(),

                                                       Color.ForestaVerde.ToArgb(), Color.Sienna.ToArgb(),

                                                   };

                        impostazioni.AltezzaPattern = 4;

                        impostazioni.LarghezzaPattern = 4;

                        impostazioni.NomePattern = "$$$/Predefiniti/Pattern/QuadratoColorato=Nuovo Quadrato Colorato\0";

                        impostazioni.IdPattern = Guid.NewGuid().ToString() + "\0";

                        livelloRiempimento.Aggiorna();

                        break;

                    }

                }

                immagine.Save(nomeDestinazione, new OpzioniPsd(immagine));

            }

PSDNET-187. Supporto delle Immagini raster nei File in Formato AI

            const double TolleranzaPredefinita = 1e-6;

void AssertIsTrue(bool condizione, string messaggio) {

 if (!condizione) {

  throw new FormatException(messaggio);

 }

}

string nomeFile = "esempio.ai";

using(AiImage immagine = (AiImage) Image.Load(nomeFile)) {

 AiLayerSection livello = immagine.Livelli[0];

 AssertIsTrue(livello.ImmaginiRaster != null, "La proprietà ImmaginiRaster dovrebbe essere diversa da null");

 AssertIsTrue(livello.ImmaginiRaster.Length == 1, "La proprietà ImmaginiRaster dovrebbe contenere esattamente un elemento");

 AiSezioneImmagineRaster immagineRaster = livello.ImmaginiRaster[0];

 AssertIsTrue(immagineRaster.Pixel != null, "La proprietà pixel dell'immagineRaster dovrebbe essere diversa da null");

 AssertIsTrue(immagineRaster.Pixel.Length == 100, "La proprietà Pixel dell'immagineRaster dovrebbe contenere esattamente 100 elementi");

 AssertIsTrue((uint) immagineRaster.Pixel[99] == 0xFFB21616, "immagineRaster.Pixel[99] dovrebbe essere 0xFFB21616");

 AssertIsTrue((uint) immagineRaster.Pixel[19] == 0xFF00FF00, "immagineRaster.Pixel[19] dovrebbe essere 0xFF00FF00");

 AssertIsTrue((uint) immagineRaster.Pixel[10] == 0xFF01FD00, "immagineRaster.Pixel[10] dovrebbe essere 0xFF01FD00");

 AssertIsTrue((uint) immagineRaster.Pixel[0] == 0xFF0000FF, "immagineRaster.Pixel[0] dovrebbe essere 0xFF0000FF");

 AssertIsTrue(Math.Abs(0.999875 - immagineRaster.Larghezza) < TolleranzaPredefinita, "immagineRaster.Larghezza dovrebbe essere 0.99987");

 AssertIsTrue(Math.Abs(0.999875 - immagineRaster.Altezza) < TolleranzaPredefinita, "immagineRaster.Altezza dovrebbe essere 0.99987");

 AssertIsTrue(Math.Abs(387 - immagineRaster.OffsetX) < TolleranzaPredefinita, "immagineRaster.OffsetX dovrebbe essere 387");

 AssertIsTrue(Math.Abs(379 - immagineRaster.OffsetY) < TolleranzaPredefinita, "immagineRaster.OffsetY dovrebbe essere 379");

 AssertIsTrue(Math.Abs(0 - immagineRaster.Angle) < TolleranzaPredefinita, "immagineRaster.Angle dovrebbe essere 0");

 AssertIsTrue(Math.Abs(0 - immagineRaster.SpostamentoInferioreSinistro) < TolleranzaPredefinita, "immagineRaster.SpostamentoInferioreSinistro dovrebbe essere 0");

 AssertIsTrue(Math.Abs(0 - immagineRaster.RettangoloImmagine.X) < TolleranzaPredefinita, "immagineRaster.RettangoloImmagine.X dovrebbe essere 0");

 AssertIsTrue(Math.Abs(0 - immagineRaster.RettangoloImmagine.Y) < TolleranzaPredefinita, "immagineRaster.RettangoloImmagine.Y dovrebbe essere 0");

 AssertIsTrue(Math.Abs(10 - immagineRaster.RettangoloImmagine.Larghezza) < TolleranzaPredefinita, "immagineRaster.RettangoloImmagine.Larghezza dovrebbe essere 10");

 AssertIsTrue(Math.Abs(10 - immagineRaster.RettangoloImmagine.Altezza) < TolleranzaPredefinita, "immagineRaster.RettangoloImmagine.Altezza dovrebbe essere 10");

}

PSDNET-225. Ottenere proprietà della formattazione inline di un Livello di testo

     using (var immaginePsd = (PsdImage)Image.Load("formattazione_in_linea.psd"))

            {

                List<ITextPortion> testoRegolare = new List<ITextPortion>();

                List<ITextPortion> testoGrassetto = new List<ITextPortion>();

                List<ITextPortion> testoCorsivo = new List<ITextPortion>();

                var livelli = immaginePsd.Livelli;

                for (int indice = 0; indice < livelli.Length; indice++)

                {

                    var livello = livelli[indice];

                    if (!(livello is TextLayer))

                    {

                        continue;

                    }

                    var livelloTesto = (TextLayer)livello;

                    // ottiene i font contenuti nel livello di testo

                    var fonts = livelloTesto.GetFonts();

                    var porzioniTesto = livelloTesto.DatiTesto.Items;

                    foreach (var porzioneTesto in porzioniTesto)

                    {

                        TextFontInfo font = fonts[porzioneTesto.Style.FontIndex];

                        if (font != null)

                        {

                            switch (font.Style)

                            {

                                case FontStyle.Regular:

                                    testoRegolare.Add(porzioneTesto);

                                    break;

                                case FontStyle.Bold:

                                    testoGrassetto.Add(porzioneTesto);

                                    break;

                                case FontStyle.Italic:

                                    testoCorsivo.Add(porzioneTesto);

                                    break;

                                default:

                                    throw new ArgumentOutOfRangeException();

                            }

                        }

                    }

                }

            }

PSDNET-214. Esportazione non corretta di un file PSD in altri formati se contiene Effetti del Livello e Livelli di Regolazione

     var opzioniCaricamento = new PsdLoadOptions();

   opzioniCaricamento.LoadEffectsResource = true;

   using (var immagine = (PsdImage)Image.Load("ombra_clip.psd", opzioniCaricamento))

   {

       immagine.Save("output.png", new PngOptions());

   }