Recortar EPS | Solución API C++

Descripción general

Este artículo explica cómo recortar EPS usando C++. Cubre los siguientes temas.

Descripción de EPS de recorte de C++

Recortar la imagen es una operación que cambia uno de los o varios márgenes de la imagen: izquierdo, derecho, superior e inferior. En otras palabras, corta el contenido de la imagen desde los bordes.

Por lo tanto, el tamaño de la representación resultante de la imagen EPS siempre será menor que el original. El volumen del archivo no cambiará ya que nuestra solución no funciona con el contenido pero sí con el encabezado del archivo EPS.

Los márgenes de la imagen EPS están definidos por los metadatos de BoundingBox. Para recortar, o en otras palabras, configurar un nuevo cuadro delimitador, debemos conocer el cuadro delimitador existente de la imagen EPS. De lo contrario, podemos asignar los valores del nuevo cuadro delimitador fuera del cuadro delimitador existente, lo que genera un error. Entonces los pasos para recortar una imagen EPS en C++ son los siguientes:

  1. Inicialice el objeto PsDocument con el flujo de entrada que contiene el archivo EPS.
  2. Extraiga el cuadro delimitador existente de la imagen utilizando el método estático ExtractEpsBoundingBox.
  3. Cree el flujo de salida para el archivo EPS resultante.
  4. Cree un nuevo cuadro delimitador.
  5. Recorte el objeto PsDocument con un nuevo cuadro delimitador con el método estático CropEps.

Puede comprobar la calidad de Aspose.Page EPS Crop y ver los resultados a través de Crop EPS en línea gratuito y luego ver el archivo EPS resultante con nuestra aplicación web EPS Viewer.

Recortar EPS en C++

En el siguiente fragmento de código C++ obtenemos el cuadro delimitador existente de la imagen y recortamos el EPS:

 1    // The path to the documents directory.
 2    System::String dataDir = RunExamples::GetDataDir_WorkingWithEPS();
 3    
 4    //Create an input stream for EPS file
 5    {
 6        System::SharedPtr<System::IO::Stream> inputEpsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"input.eps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
 7        // Clearing resources under 'using' statement
 8        System::Details::DisposeGuard<1> __dispose_guard_1({ inputEpsStream});
 9        // ------------------------------------------
10        
11        try
12        {
13            //Initialize PsDocument object with input stream
14            System::SharedPtr<PsDocument> doc = System::MakeObject<PsDocument>(inputEpsStream);
15            
16            //Get initial bounding box of EPS image
17            System::ArrayPtr<int32_t> initialBoundingBox = doc->ExtractEpsBoundingBox();
18            
19            //Create an output stream for resized EPS
20            {
21                System::SharedPtr<System::IO::Stream> outputEpsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"output_crop.eps", System::IO::FileMode::Create, System::IO::FileAccess::Write);
22                // Clearing resources under 'using' statement
23                System::Details::DisposeGuard<1> __dispose_guard_0({ outputEpsStream});
24                // ------------------------------------------
25                
26                try
27                {
28                    //Create new bounding box
29                    //Bounding box is represented by 4 numbers: x0, y0, x, y, where x0 - left margin, y0 - top margin, x - (x0 + width), y - (y0 + height)
30                    System::ArrayPtr<float> newBoundingBox = System::MakeArray<float>({260, 300, 480, 432});
31                    
32                    //Crop EPS image and save to the output stream                    
33                    //Croping of image is changing of its bounding box so that new values of bounding box will be within initial bounding box, that is
34                    //initialBoundingBox[0] <= newBoundingBox[0] <= initialBoundingBox[2]
35                    //initialBoundingBox[1] <= newBoundingBox[1] <= initialBoundingBox[3]
36                    //initialBoundingBox[0] <= newBoundingBox[2] <= initialBoundingBox[2]
37                    //initialBoundingBox[1] <= newBoundingBox[3] <= initialBoundingBox[3]
38                    doc->CropEps(outputEpsStream, newBoundingBox);
39                }
40                catch(...)
41                {
42                    __dispose_guard_0.SetCurrentException(std::current_exception());
43                }
44            }
45        }
46        catch(...)
47        {
48            __dispose_guard_1.SetCurrentException(std::current_exception());
49        }
50    }

Ver EPS de cultivo en Java y .NET.

Imagen EPS inicial
Imagen inicial
Imagen EPS recortada
Imagen recortada

Evalúe el recorte de EPS en línea en nuestra aplicación web para recortar EPS. Puede recortar el archivo EPS y descargar el resultado en unos segundos.

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.