Обрізка EPS | API Рішення для C++

Огляд

У цій статті пояснюється, як обрізати EPS за допомогою C++. Він охоплює наступні теми.

C++ Crop EPS Опис

Кадрування зображення — це операція, яка змінює одне з або кількох полів зображення: ліве, праве, верхнє та нижнє. Іншими словами, він вирізає вміст зображення з країв.

Таким чином, розмір результуючого зображення EPS завжди буде меншим за вихідний. Обсяг файлу не буде змінено, оскільки наше рішення не працює з вмістом, але працює із заголовком файлу EPS.

Поля зображення EPS визначаються метаданими BoundingBox. Щоб обрізати, або, іншими словами, встановити нову рамку обмежування, ми повинні знати існуючу рамку обмеження зображення EPS. В іншому випадку ми можемо призначити значення нової обмежувальної рамки за межами існуючої обмежувальної рамки, що призведе до помилки. Отже, кроки для кадрування зображення EPS у C++ такі:

  1. Ініціалізуйте об’єкт PsDocument вхідним потоком, що містить файл EPS.
  2. Витягніть існуючу обмежувальну рамку зображення за допомогою статичного методу ExtractEpsBoundingBox.
  3. Створіть вихідний потік для кінцевого файлу EPS.
  4. Створіть нову обмежувальну рамку.
  5. Обріжте об’єкт PsDocument новою обмежувальною рамкою за допомогою статичного методу CropEps.

Ви можете перевірити якість Aspose.Page EPS Crop і переглянути результати за допомогою безкоштовної онлайн-сторінки Crop EPS а потім переглянути отриманий файл EPS за допомогою нашої веб-програми EPS Viewer.

Обрізати EPS у C++

У наведеному нижче фрагменті коду C++ ми отримуємо існуючу обмежувальну рамку зображення та кадрування 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    }

Див. Обрізати EPS у Java і .NET.

Початкове зображення EPS
Початкове зображення
Обрізане зображення EPS
Обрізане зображення

Оцініть кадрування EPS онлайн в нашому веб-додатку Crop EPS. Ви можете обрізати файл EPS і завантажити результат за кілька секунд.

Ви можете завантажити приклади та файли даних із GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.