Lavorare con le immagini in PostScript | C++

Aggiungi immagine in un documento PS

La libreria Aspose.Page per C++ offre due metodi per aggiungere immagini a un documento PS:

È stato creato perché PostScript non supporta la trasparenza, ma le immagini traslucide possono essere visualizzate come un insieme di pixel completamente trasparenti e completamente opachi. Tali immagini sono chiamate maschere. Se vogliamo visualizzare l’immagine traslucida nel documento PS come maschera, che rifletterà meglio la trasparenza dell’immagine, dovremmo eseguire un controllo e una pre-elaborazione di tale immagine.

Il controllo e la pre-elaborazione richiedono tempo. Pertanto, se si è certi che l’immagine sia completamente opaca, è meglio utilizzare il primo metodo, perché consente di risparmiare tempo di esecuzione.

Il secondo metodo riconosce se l’immagine è completamente opaca, completamente trasparente o traslucida. Se è completamente opaca, viene aggiunta come immagine opaca nel primo metodo, se è completamente trasparente, non viene aggiunta al documento, mentre se è un’immagine traslucida, viene aggiunta come immagine PostScript maschera.

Nell’esempio seguente mostriamo come aggiungere un’immagine completamente opaca. L’aggiunta di un’immagine trasparente verrà illustrata nell’articolo “Lavorare con la trasparenza”.

Per aggiungere un’immagine a un nuovo PsDocument con la libreria Aspose.Page per C++, in questo esempio seguiamo i seguenti passaggi:

  1. Creare un flusso di output per il file PS risultante.
  2. Creare un oggetto PsSaveOptions con opzioni predefinite. 3. Creare un PsDocument di una pagina con un flusso di output già creato e opzioni di salvataggio.
  3. Creare un nuovo stato grafico.
  4. Creare System.Drawing.Bitmap dal file immagine.
  5. Creare la trasformazione necessaria per l’immagine.
  6. Aggiungere l’immagine all’oggetto PsDocument.
  7. Uscire dallo stato grafico corrente e tornare al livello superiore.
  8. Chiudere la pagina.
  9. Salvare il documento.
 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    }

Vedi come lavorare con le immagini nei documenti PS in .NET o Java.

Il risultato dell’esecuzione di questo codice viene visualizzato come

Aggiungi immagine

È possibile scaricare esempi e file di dati da GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.