Ritaglia EPS | Soluzione API per C++

Panoramica

Questo articolo spiega come ritagliare un file EPS usando C++. Tratta i seguenti argomenti.

Descrizione del ritaglio EPS in C++

Ritagliare un’immagine è un’operazione che modifica uno o più margini dell’immagine: sinistro, destro, superiore e inferiore. In altre parole, ritaglia il contenuto dell’immagine dai bordi.

Pertanto, la dimensione della rappresentazione risultante dell’immagine EPS sarà sempre inferiore all’originale. Il volume del file non verrà modificato poiché la nostra soluzione non lavora con il contenuto, ma con l’intestazione del file EPS.

I margini dell’immagine EPS sono definiti dai metadati del BoundingBox. Per ritagliare, o in altre parole, impostare un nuovo boundingbox, è necessario conoscere il boundingbox esistente dell’immagine EPS. In caso contrario, è possibile assegnare i valori del nuovo boundingbox al di fuori di quello esistente, generando un errore. Ecco quindi i passaggi per ritagliare un’immagine EPS in C++:

  1. Inizializzare l’oggetto PsDocument con il flusso di input contenente il file EPS.
  2. Estrarre il riquadro di delimitazione esistente dell’immagine utilizzando il metodo statico ExtractEpsBoundingBox.
  3. Creare il flusso di output per il file EPS risultante.
  4. Creare un nuovo riquadro di delimitazione.
  5. Ritagliare l’oggetto PsDocument con il nuovo riquadro di delimitazione utilizzando il metodo statico CropEps.

Puoi verificare la qualità del ritaglio EPS di Aspose.Page e visualizzare i risultati tramite la funzione online gratuita Ritaglia EPS, quindi visualizzare il file EPS risultante con la nostra applicazione web Visualizzatore EPS.


Ritaglia EPS in C++

Nel seguente frammento di codice C++ otteniamo il riquadro di delimitazione esistente dell’immagine e ritagliamo l’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    }

Vedi Ritaglia EPS in Java e .NET.

Immagine EPS iniziale
Immagine iniziale
Immagine EPS ritagliata
Immagine ritagliata

Prova a ritagliare EPS online sulla nostra applicazione web Ritaglia EPS. Puoi ritagliare il file EPS e scaricare il risultato in pochi secondi.

È 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.