Notes de publication d'Aspose.PSD pour .NET 20.10

Clé Résumé Catégorie
PSDNET-565 Exception lors de l’enregistrement du fichier PSD spécifique avec des calques de texte Bogue
PSDNET-680 Les polices sont perdues après plusieurs allers-retours avec Aspose.PSD Bogue
PSDNET-704 Rendu de la couche d’objet intelligent Fonctionnalité
PSDNET-707 Prise en charge des transformations non destructives de l’objet intelligent Fonctionnalité
PSDNET-711 Le calque de texte est décalé après l’enregistrement sans aucun changement Bogue
PSDNET-720 Aspose.PSD 20.8: Exception de conversion de Psd en Tiff Bogue

Modifications de l’API publique

APIs ajoutées :

  • Aucune

APIs supprimées :

  • Aucune

Exemples d’utilisation :

PSDNET-565. Exception lors de l’enregistrement du fichier PSD spécifique avec des calques de texte

            string nomFichierSource = "OneReview-InDesign-RefreshPreviewIxD(2).psd";
            string fichierSortie = "result.psd";

            using (PsdImage image = (PsdImage)Image.Load(nomFichierSource))
            {
                image.Save(fichierSortie, new PsdOptions(image));
            }
PSDNET-680. Les polices sont perdues après plusieurs allers-retours avec Aspose.PSD
            string sourceFichier = "TwoFonts.psd";

            string sortiePsd1 = "sortie1.psd";
            string sortiePsd2 = "sortie2.psd";
            string sortiePng1 = "sortie1.png";
            string sortiePng2 = "sortie2.png";

            void SontEgaux(int attendu, int réel)
            {
                if (attendu != réel)
                {
                    throw new Exception("Les valeurs ne sont pas égales.");
                }
            }

            using (var psdImage = (PsdImage)Image.Load(sourceFichier))
            {
                var calqueTexte = (TextLayer)psdImage.Layers[1];

                SontEgaux(1, calqueTexte.TextData.Items[0].Style.FontIndex);
                SontEgaux(0, calqueTexte.TextData.Items[1].Style.FontIndex);

                calqueTexte.TextData.UpdateLayerData();

                SontEgaux(1, calqueTexte.TextData.Items[0].Style.FontIndex);
                SontEgaux(0, calqueTexte.TextData.Items[1].Style.FontIndex);

                psdImage.Save(sortiePsd1, new PsdOptions(psdImage));
                psdImage.Save(sortiePng1, new PngOptions());
            }

            using (var psdImage = (PsdImage)Image.Load(sortiePsd1))
            {
                var calqueTexte = (TextLayer)psdImage.Layers[1];

                SontEgaux(1, calqueTexte.TextData.Items[0].Style.FontIndex);
                SontEgaux(0, calqueTexte.TextData.Items[1].Style.FontIndex);

                calqueTexte.TextData.UpdateLayerData();

                SontEgaux(1, calqueTexte.TextData.Items[0].Style.FontIndex);
                SontEgaux(0, calqueTexte.TextData.Items[1].Style.FontIndex);

                psdImage.Save(sortiePsd2, new PsdOptions(psdImage));
                psdImage.Save(sortiePng2, new PngOptions());
            }
PSDNET-704. Rendu de la couche d’objet intelligent
            // Cet exemple montre comment remplacer le contenu de la couche d'objet intelligent Adobe® Photoshop® et son rendu correct.
            string répertoireDonnées = "PSDNET704_1\\";
            string cheminFichier = répertoireDonnées + "new_panama-papers-4-trans4.psd";
            string cheminSortiePng = répertoireDonnées + "new_panama-papers-4-trans4_replaced.png";
            string cheminSortiePsd = répertoireDonnées + "new_panama-papers-4-trans4_replaced.psd";
            string cheminNouveauContenu = répertoireDonnées + "new_huset.jpg";
            using (PsdImage image = (PsdImage)Image.Load(cheminFichier))
            {
                var calqueObjetIntelligent = (SmartObjectLayer)image.Layers[image.Layers.Length - 1];
                calqueObjetIntelligent.ReplaceContents(cheminNouveauContenu);
                image.Save(cheminSortiePng, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                image.Save(cheminSortiePsd, new PsdOptions(image));
            }

            // Cet exemple montre comment mettre à jour le cache d'image des calques d'objet intelligent Adobe® Photoshop® et leur rendu correct.
            cheminFichier = répertoireDonnées + "LayeredSmartObjects8bit2.psd";
            cheminSortiePng = répertoireDonnées + "LayeredSmartObjects8bit2_updated.png";
            cheminSortiePsd = répertoireDonnées + "LayeredSmartObjects8bit2_updated.psd";
            using (PsdImage image = (PsdImage)Image.Load(cheminFichier))
            {
                image.SmartObjectProvider.UpdateAllModifiedContent();
                image.Save(cheminSortiePng, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
                image.Save(cheminSortiePsd, new PsdOptions(image));
            }
PSDNET-707. Prise en charge des transformations non destructives de l’objet intelligent
            string répertoireDonnées = "PSDNET707_1\\";
            string répertoireSortie = répertoireDonnées;

            // Ces exemples montrent des transformations non destructives du fichier PSD avec SmartObjectLayer.
            // Nous pouvons redimensionner, faire pivoter, incliner, déformer, transformer en perspective ou déformer un calque sans
            // perdre les données ou la qualité de l'image d'origine car les transformations n'affectent pas les données d'origine.

            // Cet exemple montre comment redimensionner l'image Adobe® Photoshop® avec des calques d'objet intelligent :
            ExempleRedimensionImageObjetIntelligent("new_panama-papers-8-trans4-linked");
            ExempleRedimensionImageObjetIntelligent("picture-frame-4-linked3");
            ExempleRedimensionImageObjetIntelligent("gorilla");

            // Cet exemple montre comment redimensionner le fichier PSD avec des calques d'objet intelligent.
            void ExempleRedimensionImageObjetIntelligent(string nomFichier)
            {
                const int échelle = 4;
                string cheminFichier = répertoireDonnées + nomFichier + ".psd";
                string cheminSortie = répertoireSortie + "Resize_" + nomFichier + ".psd";
                string cheminSortiePng = répertoireSortie + "Resize_" + nomFichier + ".png";
                using (PsdImage image = (PsdImage)Image.Load(cheminFichier))
                {
                    int nouvelleLargeur = image.Width * échelle;
                    int nouvelleHauteur = image.Height * échelle;
                    image.Resize(nouvelleLargeur, nouvelleHauteur);
                    image.Save(cheminSortie, new PsdOptions(image));
                    image.Save(cheminSortiePng, new PngOptions { ColorType = PngColorType.TruecolorWithAlpha });
                }
            }

            // Cet exemple montre comment redimensionner la couche d'objet intelligent Adobe® Photoshop®.
            ExempleRedimensionCoucheObjetIntelligent("new_panama-papers-8-trans4-linked");
            ExempleRedimensionCoucheObjetIntelligent("gorilla");

            // Cet exemple montre comment redimensionner une couche d'objet intelligent dans le fichier PSD.
            void ExempleRedimensionCoucheObjetIntelligent(string nomFichier)
            {
                const double échelle = 3.5;
                string cheminFichier = répertoireDonnées + nomFichier + ".psd";
                string cheminSortie = répertoireSortie + "ResizeLast_" + nomFichier + ".psd";
                string cheminSortiePng = répertoireSortie + "ResizeLast_" + nomFichier + ".png";
                using (PsdImage image = (PsdImage)Image.Load(cheminFichier))
                {
                    var calqueObjetIntelligent = image.Layers[image.Layers.Length - 1];
                    int nouvelleLargeur = (int)(calqueObjetIntelligent.Width * échelle);
                    int nouvelleHauteur = (int)(calqueObjetIntelligent.Height * échelle);
                    calqueObjetIntelligent.Resize(nouvelleLargeur, nouvelleHauteur);
                    image.Save(cheminSortie, new PsdOptions(image));
                    image.Save(cheminSortiePng, new PngOptions {ColorType = PngColorType.TruecolorWithAlpha});
                }
            }

            // Cet exemple montre comment recadrer la couche d'objet intelligent Adobe® Photoshop®.
            ExempleRecadrageCoucheObjetIntelligent("new_panama-papers-8-trans4-linked");
            ExempleRecadrageCoucheObjetIntelligent("gorilla");

            // Cet exemple montre comment recadrer une couche d'objet intelligent dans le fichier PSD.
            void ExempleRecadrageCoucheObjetIntelligent(string nomFichier)
            {
                string cheminFichier = répertoireDonnées + nomFichier + ".psd";
                string cheminSortie = répertoireSortie + "CropLast_" + nomFichier + ".psd";
                string cheminSortiePng = répertoireSortie + "CropLast_" + nomFichier + ".png";
                using (PsdImage image = (PsdImage)Image.Load(cheminFichier))
                {
                    var calqueObjetIntelligent = image.Layers[image.Layers.Length - 1];
                    calqueObjetIntelligent.Crop(25, 15, 30, 10);
                    image.Save(cheminSortie, new PsdOptions(image));
                    image.Save(cheminSortiePng, new PngOptions { ColorType = PngColorType.TruecolorWithAlpha });
                }
            }

            // Cet exemple montre comment recadrer la couche d'objet intelligent Adobe® Photoshop®:
            ExempleRecadrageImageObjetIntelligent("new_panama-papers-8-trans4-linked");
            ExempleRecadrageImageObjetIntelligent("gorilla");

            // Cet exemple montre comment recadrer le fichier PSD avec des calques d'objet intelligent.
            void ExempleRecadrageImageObjetIntelligent(string nomFichier)
            {
                string cheminFichier = répertoireDonnées + nomFichier + ".psd";
                string cheminSortie = répertoireSortie + "Crop_" + nomFichier + ".psd";
                string cheminSortiePng = répertoireSortie + "Crop_" + nomFichier + ".png";
                using (PsdImage image = (PsdImage)Image.Load(cheminFichier))
                {
                    image.Crop(25, 10, 30, 5);
                    image.Save(cheminSortie, new PsdOptions(image));
                    image.Save(cheminSortiePng, new PngOptions { ColorType = PngColorType.TruecolorWithAlpha });
                }
            }

            // Cet exemple montre comment faire pivoter et retourner l'image Adobe® Photoshop® avec des calques d'objet intelligent :
            ExempleRotationRetournementImageObjetIntelligent("gorilla", RotateFlipType.Rotate90FlipNone);
            ExempleRotationRetournementImageObjetIntelligent("new_panama-papers-8-trans4-linked", RotateFlipType.RotateNoneFlipX);
            ExempleRotationRetournementImageObjetIntelligent("new_panama-papers-8-trans4-linked", RotateFlipType.RotateNoneFlipY);
            ExempleRotationRetournementImageObjetIntelligent("new_panama-papers-8-trans4-linked", RotateFlipType.RotateNoneFlipXY);
            ExempleRotationRetournementImageObjetIntelligent("new_panama-papers-8-trans4-linked", RotateFlipType.Rotate90FlipNone);
            ExempleRotationRetournementImageObjetIntelligent("new_panama-papers-8-trans4-linked", RotateFlipType.Rotate90FlipX);
            ExempleRotationRetournementImageObjetIntelligent("new_panama-papers-8-trans4-linked", RotateFlipType.Rotate90FlipY);
            ExempleRotationRetournementImageObjetIntelligent("new_panama-papers-8-trans4-linked", RotateFlipType.Rotate90FlipXY);

            // Cet exemple montre comment faire pivoter et retourner le fichier PSD avec des calques d'objet intelligent.
            void ExempleRotationRetournementImageObjetIntelligent(string nomFichier, RotateFlipType typeRotationRetournement)
            {
                string cheminFichier = répertoireDonnées + nomFichier + ".psd";
                string cheminSortie = répertoireSortie + typeRotationRetournement + "_" + nomFichier + ".psd";
                string cheminSortiePng = répertoireSortie + typeRotationRetournement + "_" + nomFichier + ".png";
                using (PsdImage image = (PsdImage)Image.Load(cheminFichier))
                {
                    image.RotateFlip(typeRotationRetournement);
                    image.Save(cheminSortie, new PsdOptions(image));
                    image.Save(cheminSortiePng, new PngOptions { ColorType = PngColorType.TruecolorWithAlpha });
                }
            }

            // Cet exemple montre comment faire pivoter et retourner la couche d'objet intelligent Adobe® Photoshop®.
            ExempleRotationRetournementCoucheObjetIntelligent("gorilla", RotateFlipType.Rotate90FlipNone);
            ExempleRotationRetournementCoucheObjetIntelligent("r3-embedded-transform2", RotateFlipType.RotateNoneFlipX);
            ExempleRotationRetournementCoucheObjetIntelligent("r3-embedded-transform2", RotateFlipType.RotateNoneFlipY);
            ExempleRotationRetournementCoucheObjetIntelligent("r3-embedded-transform2", RotateFlipType.RotateNoneFlipXY);
            ExempleRotationRetournementCoucheObjetIntelligent("r3-embedded-transform2", RotateFlipType.Rotate90FlipNone);
            ExempleRotationRetournementCoucheObjetIntelligent("r3-embedded-transform2", RotateFlipType.Rotate90FlipX);
            ExempleRotationRetournementCoucheObjetIntelligent("r3-embedded-transform2", RotateFlipType.Rotate90FlipY);
            ExempleRotationRetournementCoucheObjetIntelligent("r3-embedded-transform2", RotateFlipType.Rotate90FlipXY);

            // Cet exemple montre comment faire pivoter et retourner une couche d'objet intelligent dans le fichier PSD.
            void ExempleRotationRetournementCoucheObjetIntelligent(string nomFichier, RotateFlipType typeRotationRetournement)
            {
                string cheminFichier = répertoireDonnées + nomFichier + ".psd";
                string cheminSortie = répertoireSortie + typeRotationRetournement + "Last_" + nomFichier + ".psd";
                string cheminSortiePng = répertoireSortie + typeRotationRetournement + "Last_" + nomFichier + ".png";
                using (PsdImage image = (PsdImage)Image.Load(cheminFichier))
                {
                    var calqueObjetIntelligent = (SmartObjectLayer)image.Layers[image.Layers.Length - 1];
                    calqueObjetIntelligent.RotateFlip(typeRotationRetournement);
                    image.Save(cheminSortie, new PsdOptions(image));
                    image.Save(cheminSortiePng, new PngOptions { ColorType = PngColorType.TruecolorWithAlpha });
                }
            }

            // Cet exemple montre comment faire pivoter la couche d'objet intelligent Adobe® Photoshop® par n'importe quel angle :
            const string FormatAngle = "+#;-#;+0";
            ExempleRotationCoucheObjetIntelligent("gorilla", 45, false);
            ExempleRotationCoucheObjetIntelligent("gorilla", 45, true);
            ExempleRotationCoucheObjetIntelligent("r3-embedded-transform2", -30, true);
            ExempleRotationCoucheObjetIntelligent("r3-embedded-transform2", -30, false);
            ExempleRotationCoucheObjetIntelligent("new_panama-papers-8-trans4-linked", 190, false);
            ExempleRotationCoucheObjetIntelligent("new_panama-papers-8-trans4-linked", 190, true);

            // Cet exemple montre comment faire pivoter une couche d'objet intelligent dans le fichier PSD par n'importe quel angle.
            void ExempleRotationCoucheObjetIntelligent(string nomFichier, float angle, bool redimensionProportionnellement)
            {
                string préfixe = "RotateLast" +  angle.ToString(FormatAngle) + (redimensionProportionnellement ? "ResizeProportionally" : "") + "_";
                string cheminFichier = répertoireDonnées + nomFichier + ".psd";
                string cheminSortie =