Travailler avec des images dans PostScript | C++

Ajouter une image dans un document PS

La bibliothèque Aspose.Page pour C++ propose deux méthodes pour ajouter des images au document PS :

Cela a été créé parce que PostScript ne prend pas en charge la transparence, mais les images translucides peuvent cependant être restituées sous la forme d’un ensemble de pixels entièrement transparents et entièrement opaques. De telles images sont appelées masques. Si nous voulons voir l’image translucide dans le document PS comme un masque, qui reflétera mieux la transparence de l’image, nous devrions effectuer une vérification et un prétraitement d’une telle image.

Le contrôle et le prétraitement nécessitent du temps. Par conséquent, si quelqu’un est sûr que l’image est totalement opaque, il est préférable d’utiliser la première méthode, car elle permet de gagner du temps d’exécution.

La deuxième méthode reconnaît si l’image est totalement opaque ou totalement transparente ou translucide. Si elle est entièrement opaque, elle est ajoutée comme image opaque dans la première méthode, si elle est entièrement transparente, elle n’est pas ajoutée du tout au document, si c’est l’image translucide, elle est ajoutée en tant que masque d’image PostScript.

Dans l’exemple ci-dessous, nous montrons comment ajouter une image entièrement opaque. L’ajout d’une image transparente sera démontré dans l’article « Travailler avec la transparence ».

Afin d’ajouter une image à un nouveau PsDocument avec la bibliothèque Aspose.Page pour C++ dans cet exemple, nous suivons les étapes suivantes :

  1. Créez un flux de sortie pour le fichier PS résultant.
  2. Créez un objet PsSaveOptions avec les options par défaut.
  3. Créez un PsDocument d’une page avec un flux de sortie déjà créé et enregistrez les options.
  4. Créez un nouvel état graphique.
  5. Créez System.Drawing.Bitmap à partir du fichier image.
  6. Créez la transformation nécessaire pour l’image.
  7. Ajoutez l’image à l’objet PsDocument.
  8. Quittez l’état graphique actuel pour passer au niveau supérieur.
  9. Fermez la page.
  10. Enregistrez le document.
 1    // The path to the documents directory.
 2    System::String dataDir = RunExamples::GetDataDir_WorkingWithImages();
 3    
 4    //Create output stream for PostScript document
 5    {
 6        System::SharedPtr<System::IO::Stream> outPsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"AddImage_outPS.ps", System::IO::FileMode::Create);
 7        // Clearing resources under 'using' statement
 8        System::Details::DisposeGuard<1> __dispose_guard_1({ outPsStream});
 9        // ------------------------------------------
10        
11        try
12        {
13            //Create save options with A4 size
14            System::SharedPtr<PsSaveOptions> options = System::MakeObject<PsSaveOptions>();
15            
16            // Create new 1-paged PS Document
17            System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(outPsStream, options, false);
18            
19            
20            document->WriteGraphicsSave();
21            document->Translate(100.0f, 100.0f);
22            
23            //Create a Bitmap object from image file
24            {
25                System::SharedPtr<System::Drawing::Bitmap> image = System::MakeObject<System::Drawing::Bitmap>(dataDir + u"TestImage Format24bppRgb.jpg");
26                // Clearing resources under 'using' statement
27                System::Details::DisposeGuard<1> __dispose_guard_0({ image});
28                // ------------------------------------------
29                
30                try
31                {
32                    //Create image transform
33                    System::SharedPtr<System::Drawing::Drawing2D::Matrix> transform = System::MakeObject<System::Drawing::Drawing2D::Matrix>();
34                    transform->Translate(35.0f, 300.0f);
35                    transform->Scale(3.0f, 3.0f);
36                    transform->Rotate(-45.0f);
37                    
38                    //Add image to document
39                    document->DrawImage(image, transform, System::Drawing::Color::Empty);
40                }
41                catch(...)
42                {
43                    __dispose_guard_0.SetCurrentException(std::current_exception());
44                }
45            }
46            
47            document->WriteGraphicsRestore();
48            
49            //Close current page
50            document->ClosePage();
51            
52            //Save the document
53            document->Save();
54        }
55        catch(...)
56        {
57            __dispose_guard_1.SetCurrentException(std::current_exception());
58        }
59    }

Voir Travailler avec des images dans des documents PS dans .NET ou Java.

Le résultat de l’exécution de ce code apparaît comme

Ajouter une image

Vous pouvez télécharger des exemples et des fichiers de données à partir de GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.