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:
- per immagini opache;
- per immagini trasparenti;
È 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:
- Creare un flusso di output per il file PS risultante.
- 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.
- Creare un nuovo stato grafico.
- Creare System.Drawing.Bitmap dal file immagine.
- Creare la trasformazione necessaria per l’immagine.
- Aggiungere l’immagine all’oggetto PsDocument.
- Uscire dallo stato grafico corrente e tornare al livello superiore.
- Chiudere la pagina.
- 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 }
Il risultato dell’esecuzione di questo codice viene visualizzato come
È possibile scaricare esempi e file di dati da GitHub.