Trabajar con imágenes en PostScript | C++

Contents
[ Hide Show ]

Agregar imagen en documento PS

La biblioteca Aspose.Page para C++ ofrece dos métodos para agregar imágenes a un documento PS:

Se creó porque PostScript no admite transparencia, pero las imágenes translúcidas, sin embargo, se pueden representar como un conjunto de píxeles completamente transparentes y completamente opacos. Estas imágenes se denominan máscaras. Si queremos ver la imagen translúcida en el documento PS como máscara, que reflejará mejor la transparencia de la imagen, debemos realizar algunas comprobaciones y preprocesamiento de dicha imagen.

La verificación y el preprocesamiento requieren tiempo. Por tanto, si alguien está seguro de que la imagen es totalmente opaca, es mejor utilizar el primer método, porque ahorra tiempo de ejecución.

El segundo método reconoce si la imagen es completamente opaca o completamente transparente o translúcida. Si es completamente opaco, se agrega como imagen opaca en el primer método. si es completamente transparente, no se agrega al documento en absoluto; si es la imagen translúcida, se agrega como una máscara de imagen PostScript.

En el siguiente ejemplo, demostramos cómo agregar una imagen completamente opaca. La adición de una imagen transparente se demostrará en el artículo “Trabajar con transparencia”.

Para agregar una imagen a un nuevo PsDocument con la biblioteca Aspose.Page para C++ en este ejemplo, seguimos los siguientes pasos:

  1. Cree una secuencia de salida para el archivo PS resultante.
  2. Cree el objeto PsSaveOptions con opciones predeterminadas.
  3. Cree un PsDocument de 1 página con un flujo de salida ya creado y opciones para guardar.
  4. Cree un nuevo estado de gráficos.
  5. Cree System.Drawing.Bitmap a partir del archivo de imagen.
  6. Crea la transformación necesaria para la imagen.
  7. Agregue la imagen al objeto PsDocument.
  8. Salga del estado de gráficos actual al nivel uno superior.
  9. Cierra la página.
  10. Guarde el 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    }

Consulte cómo trabajar con imágenes en documentos PS en .NET o Java.

El resultado de ejecutar este código aparece como

Agregar imagen

Puede descargar ejemplos y archivos de datos desde GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.