Обрезка и изменение размера EPS

Нативное решение C++ API для управления размером изображений EPS.

 

Преобразовать изображение EPS стало еще проще! С Aspose.Page для C++ вы можете обрезать или изменять размер файлов EPS в соответствии с вашими точными спецификациями за несколько строк кода. Хотите сделать его больше? Без проблем. Нужно меньше? Мы позаботимся об этом. Наш API для C++ позволяет точно масштабировать изображение, обеспечивая его идеальное соответствие вашей задумке. Но почему вам может понадобиться обрезать или изменить размер изображения EPS?

  • Если вы разрабатываете макет для печатного или цифрового документа, вам может потребоваться изменить размер изображения EPS, чтобы оно соответствовало определенным размерам.
  • Уменьшив размер изображения, вы можете уменьшить размер файла, что упростит совместное использование, загрузку или печать. Изображения меньшего размера также быстрее загружаются на веб-сайтах и в цифровых документах, повышая удобство работы пользователей.
  • Обрезка (cropping) может помочь устранить отвлекающие или ненужные части изображения, сфокусировав внимание на ключевых элементах, а также может изменить соотношение сторон изображения, чтобы оно лучше соответствовало вашим дизайнерским задачам. Таким образом, аккуратная обрезка может улучшить общую композицию и визуальную привлекательность изображения.
  • Обрезка и изменение размера могут помочь оптимизировать изображение для использования в Интернете, гарантируя его быструю загрузку и хорошее отображение на экранах разных размеров.

Aspose.Page предоставляет вам функциональность для простого управления границами файлов EPS. С помощью этого API вы можете масштабировать или обрезать изображения, используя C#. Чтобы узнать больше о том, как работать с файлами EPS , следуйте документации. Чтобы увидеть функции в действии, попробуйте наши кроссплатформенные приложения EPS Crop и EPS Resize .

Чтобы использовать функциональность, сначала вам нужно получить решение:

  • Откройте диспетчер пакетов NuGet, найдите Aspose.Page и установите его. Вы также можете использовать следующую команду в консоли диспетчера пакетов (Package Manager Console).

Package Manager Console Command

    PM> Install-Package Aspose.Page

Шаги по изменению размера изображения EPS.

В примере ниже показан процесс изменения размера .eps в выбранных единицах - пунктах (points). Порядок действий:

  1. Инициализируйте объект PsDocument с входным потоком, содержащим файл EPS.
  2. Определите существующий размер изображения, используя статический метод ExtractEpsSize() .
  3. Создайте выходной поток (output stream) для результирующего файла EPS.
  4. Измените размер объекта PsDocument на новый размер в пунктах с помощью статического метода ResizeEps() .
  5. Сохраните файл EPS с измененным размером.
Изменение размера EPS
    // 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());
        }
    }

В приведенном ниже примере показан процесс обрезки (cropping) вместо изменения размера .eps в выбранных единицах — пунктах. Порядок выполнения:

  1. Инициализируйте объект PsDocument с входным потоком, содержащим файл EPS.
  2. Определите существующую ограничивающую рамку (bounding box) изображения, используя статический метод ExtractEpsBoundingBox() .
  3. Создайте выходной поток (output stream) для результирующего файла EPS.
  4. Обрежьте объект PsDocument по новой ограничивающей рамке с помощью статического метода CropEps() .
  5. Сохраните обрезанный файл EPS.
Обрезка EPS
    // 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 Формат файла EPS

EPS (Encapsulated PostScript) — формат на основе PostScript, описывающий одну страницу. Идеален для векторных изображений и комбинированных вектор‑растровых график. После импорта файл нельзя редактировать, поэтому рекомендуется конвертировать в редактируемый формат, например SVG или PDF.