Arbeiten mit Bildern in PostScript | C++

Contents
[ Hide Show ]

Bild im PS-Dokument hinzufügen

Die Aspose.Page for C++-Bibliothek bietet zwei Methoden zum Hinzufügen von Bildern zu PS-Dokumenten:

Es wurde erstellt, weil PostScript keine Transparenz unterstützt, durchscheinende Bilder jedoch als eine Reihe vollständig transparenter und vollständig undurchsichtiger Pixel gerendert werden können. Solche Bilder werden Masken genannt. Wenn wir das durchscheinende Bild im PS-Dokument als Maske sehen möchten, damit die Transparenz des Bildes besser wiedergegeben wird, sollten wir ein solches Bild überprüfen und vorverarbeiten.

Die Prüfung und die Vorverarbeitung benötigen Zeit. Wenn jemand sicher ist, dass das Bild vollständig undurchsichtig ist, ist es daher besser, die erste Methode zu verwenden, da dadurch Ausführungszeit gespart wird.

Die zweite Methode erkennt, ob das Bild vollständig undurchsichtig oder vollständig transparent bzw. durchscheinend ist. Wenn es vollständig undurchsichtig ist, wird es in der ersten Methode als undurchsichtiges Bild hinzugefügt. Wenn es vollständig transparent ist, wird es dem Dokument überhaupt nicht hinzugefügt. Wenn es sich um ein durchscheinendes Bild handelt, wird es als PostScript-Bild-Maske hinzugefügt.

Im folgenden Beispiel zeigen wir, wie man ein vollständig undurchsichtiges Bild hinzufügt. Das Hinzufügen eines transparenten Bildes wird im Artikel „Arbeiten mit Transparenz“ demonstriert.

Um in diesem Beispiel ein Bild zu einem neuen PsDocument mit der Aspose.Page für C++-Bibliothek hinzuzufügen, führen wir die folgenden Schritte aus:

  1. Erstellen Sie einen Ausgabestream für die resultierende PS-Datei.
  2. Erstellen Sie ein PsSaveOptions-Objekt mit Standardoptionen.
  3. Erstellen Sie ein einseitiges PsDocument mit einem bereits erstellten Ausgabestream und Speicheroptionen.
  4. Erstellen Sie einen neuen Grafikstatus.
  5. Erstellen Sie System.Drawing.Bitmap aus der Bilddatei.
  6. Erstellen Sie die erforderliche Transformation für das Bild.
  7. Fügen Sie das Bild zum PsDocument-Objekt hinzu.
  8. Verlassen Sie den aktuellen Grafikstatus zur oberen Ebene eins.
  9. Schließen Sie die Seite.
  10. Speichern Sie das Dokument.
 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    }

Weitere Informationen finden Sie unter „Arbeiten mit Bildern in PS-Dokumenten“ in .NET oder Java.

Das Ergebnis der Ausführung dieses Codes wird wie folgt angezeigt:

Bild hinzufügen

Sie können Beispiele und Datendateien herunterladen von GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.