Recadrer EPS | Solution API C++

Aperçu

Cet article explique comment recadrer EPS à l’aide de C++. Il couvre les sujets suivants.

C++ Culture EPS descriptif

Le recadrage de l’image est une opération qui modifie une ou plusieurs marges de l’image : gauche, droite, haut et bas. En d’autres termes, cela coupe le contenu de l’image des bords.

Ainsi, la taille de la représentation résultante de l’image EPS sera toujours inférieure à l’originale. Le volume du fichier ne sera pas modifié car notre solution ne fonctionne pas avec le contenu mais fonctionne avec l’en-tête du fichier EPS.

Les marges de l’image EPS sont définies par les métadonnées BoundingBox. Afin de recadrer, ou en d’autres termes, de créer un nouveau cadre de délimitation, nous devons connaître le cadre de délimitation existant de l’image EPS. Sinon, nous pouvons attribuer les valeurs du nouveau cadre de délimitation en dehors du cadre de délimitation existant, ce qui entraîne une erreur. Ainsi, les étapes de recadrage d’une image EPS en C++ sont les suivantes :

  1. Initialisez l’objet PsDocument avec le flux d’entrée contenant le fichier EPS.
  2. Extrayez le cadre de délimitation existant de l’image à l’aide de la méthode statique ExtractEpsBoundingBox.
  3. Créez le flux de sortie pour le fichier EPS résultant.
  4. Créez un nouveau cadre de délimitation.
  5. Recadrez l’objet PsDocument avec un nouveau cadre de délimitation avec la méthode statique CropEps.

Vous pouvez vérifier la qualité du recadrage EPS Aspose.Page et afficher les résultats via la fonction gratuite en ligne Crop EPS, puis afficher le fichier EPS résultant avec notre application Web EPS Viewer.

Recadrer l’EPS en C++

Dans l’extrait de code C++ suivant nous obtenons le cadre de délimitation existant de l’image et recadrons 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    }

Voir Crop EPS dans Java et .NET.

Image EPS initiale
Image initiale
Image EPS recadrée
Image recadrée

Évaluez le recadrage EPS en ligne sur notre application Web de recadrage EPS. Vous pouvez recadrer un fichier EPS et télécharger le résultat en quelques secondes.

Vous pouvez télécharger des exemples et des fichiers de données à partir de GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.