EPS kivágása és átméretezése

Natív C++ API megoldás az EPS képek méretének kezelésére.

 

Az EPS-kép átalakítása most könnyebbé vált! Az Aspose.Page for C++ segítségével néhány sor kóddal pontosan a specifikációinak megfelelően vághatja ki vagy módosíthatja az EPS fájlok méretét. Nagyobbat szeretne? Nem probléma. Kisebbre van szüksége? Gondoskodunk róla. A C++ API-nk lehetővé teszi a kép pontos méretezését, biztosítva, hogy az tökéletesen illeszkedjen az elképzeléséhez. De miért is szeretne kivágni vagy átméretezni egy EPS képet?

  • Ha egy nyomtatott vagy digitális dokumentum elrendezését tervezi, szükség lehet az EPS-kép átméretezésére, hogy beférjen bizonyos méretekbe.
  • A képméret csökkentésével csökkentheti a fájlméretet, megkönnyítve a megosztást, feltöltést vagy nyomtatást. A kisebb képfájlok gyorsabban betöltődnek a weboldalakra és a digitális dokumentumokba is, javítva a felhasználói élményt.
  • A kivágás (cropping) segíthet kiküszöbölni a kép zavaró vagy irreleváns részeit, a figyelmet a kulcsfontosságú elemekre fókuszálva, és a kép képarányát is megváltoztathatja, hogy jobban megfeleljen a tervezési igényeinek. Így a gondos kivágás javíthatja az általános kompozíciót és a kép vizuális vonzerejét.
  • A kivágás és átméretezés segíthet a kép webes használatra történő optimalizálásában, biztosítva a gyors letöltést és a megfelelő megjelenést a különböző képernyőméreteken.

Az Aspose.Page biztosítja az Ön számára a funkcionalitást az EPS fájlok határainak egyszerű kezeléséhez. Ezzel az API-val C# használatával skálázhatja vagy kivághatja a képeket. Ha többet szeretne megtudni az EPS fájlok kezeléséről , kövesse a dokumentációt. A funkcionalitás élő verziójának megtekintéséhez próbálja ki az EPS Crop és EPS Resize többplatformos alkalmazásokat.

A funkcionalitás használatához először meg kell szereznie a megoldást:

  • Nyissa meg a NuGet Csomagkezelőt (Package Manager), keressen rá az Aspose.Page kifejezésre, és telepítse. A következő parancsot is használhatja a Csomagkezelő Konzolból (Package Manager Console).

Package Manager Console Command

    PM> Install-Package Aspose.Page

Az EPS kép méretének megváltoztatásának lépései.

Az alábbi példa a .eps átméretezési (resizing) folyamatát mutatja be a kiválasztott mértékegységekkel – pontok (points). A sorrend:

  1. Inicializálja az PsDocument objektumot egy EPS fájlt tartalmazó bemeneti folyammal (input stream).
  2. Határozza meg a kép meglévő méretét az ExtractEpsSize() statikus metódus használatával.
  3. Hozzon létre egy kimeneti folyamot (output stream) az eredményül kapott EPS fájlhoz.
  4. Méretezze át a PsDocument objektumot egy új méretre pontokban a ResizeEps() statikus metódussal.
  5. Mentse az átméretezett EPS fájlt.
EPS átméretezése
    // The path to the documents directory.
    System::String dataDir = RunExamples::GetDataDir_WorkingWithEPS();
    
    //Create an input stream for EPS file
    {
        System::SharedPtr<System::IO::Stream> inputEpsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"input.eps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
        // Clearing resources under 'using' statement
        System::Details::DisposeGuard<1> __dispose_guard_1({ inputEpsStream});
        // ------------------------------------------
        
        try
        {
            //Initialize PsDocument object with input stream
            System::SharedPtr<PsDocument> doc = System::MakeObject<PsDocument>(inputEpsStream);
            
            //Get size of EPS image
            System::Drawing::Size oldSize = doc->ExtractEpsSize();
            
            //Create an output stream for resized EPS
            {
                System::SharedPtr<System::IO::Stream> outputEpsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"output/" + u"output_resize_points.eps", System::IO::FileMode::Create, System::IO::FileAccess::Write);
                // Clearing resources under 'using' statement
                System::Details::DisposeGuard<1> __dispose_guard_0({ outputEpsStream});
                // ------------------------------------------
                
                try
                {
                    //Increase EPS size in 2 times and save to the output stream
                    doc->ResizeEps(outputEpsStream, System::Drawing::SizeF(static_cast<float>(oldSize.get_Width() * 2), static_cast<float>(oldSize.get_Height() * 2)), Aspose::Page::Units::Points);
                }
                catch(...)
                {
                    __dispose_guard_0.SetCurrentException(std::current_exception());
                }
            }
        }
        catch(...)
        {
            __dispose_guard_1.SetCurrentException(std::current_exception());
        }
    }

Az alábbi példa a kivágási (cropping) folyamatot mutatja be a .eps átméretezése helyett a kiválasztott mértékegységekkel - pontokkal. A sorrend:

  1. Inicializálja az PsDocument objektumot egy EPS fájlt tartalmazó bemeneti folyammal (input stream).
  2. Határozza meg a kép meglévő határoló dobozát (bounding box) az ExtractEpsBoundingBox() statikus metódus használatával.
  3. Hozzon létre egy kimeneti folyamot (output stream) az eredményül kapott EPS fájlhoz.
  4. Vágja ki a PsDocument objektumot egy új határoló dobozzal a CropEps() statikus metódussal.
  5. Mentse a kivágott EPS fájlt.
EPS kivágása
    // The path to the documents directory.
    System::String dataDir = RunExamples::GetDataDir_WorkingWithEPS();
    
    //Create an input stream for EPS file
    {
        System::SharedPtr<System::IO::Stream> inputEpsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"input.eps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
        // Clearing resources under 'using' statement
        System::Details::DisposeGuard<1> __dispose_guard_1({ inputEpsStream});
        // ------------------------------------------
        
        try
        {
            //Initialize PsDocument object with input stream
            System::SharedPtr<PsDocument> doc = System::MakeObject<PsDocument>(inputEpsStream);
            
            //Get initial bounding box of EPS image
            System::ArrayPtr<int32_t> initialBoundingBox = doc->ExtractEpsBoundingBox();
            
            //Create an output stream for resized EPS
            {
                System::SharedPtr<System::IO::Stream> outputEpsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"output/" + u"output_crop.eps", System::IO::FileMode::Create, System::IO::FileAccess::Write);
                // Clearing resources under 'using' statement
                System::Details::DisposeGuard<1> __dispose_guard_0({ outputEpsStream});
                // ------------------------------------------
                
                try
                {
                    //Create new bounding box
                    //Bounding box is represented by 4 numbers: x0, y0, x, y, where x0 - left margin, y0 - top margin, x - (x0 + width), y - (y0 + height)
                    System::ArrayPtr<float> newBoundingBox = System::MakeArray<float>({260, 300, 480, 432});
                    
                    //Crop EPS image and save to the output stream                    
                    //Croping of image is changing of its bounding box so that new values of bounding box will be within initial bounding box, that is
                    //initialBoundingBox[0] <= newBoundingBox[0] <= initialBoundingBox[2]
                    //initialBoundingBox[1] <= newBoundingBox[1] <= initialBoundingBox[3]
                    //initialBoundingBox[0] <= newBoundingBox[2] <= initialBoundingBox[2]
                    //initialBoundingBox[1] <= newBoundingBox[3] <= initialBoundingBox[3]
                    doc->CropEps(outputEpsStream, newBoundingBox);
                }
                catch(...)
                {
                    __dispose_guard_0.SetCurrentException(std::current_exception());
                }
            }
        }
        catch(...)
        {
            __dispose_guard_1.SetCurrentException(std::current_exception());
        }
    }

EPS Mi a EPS fájlformátum

EPS (Encapsulated PostScript) egy PostScript‑alapú formátum, amely egyetlen oldal megjelenését írja le. Ideális vektor‑ és vektor‑raster keverékekhez. A fájl importálása után már nem szerkeszthető, ezért gyakran konvertálják szerkeszthető formátumba (pl. SVG vagy PDF).