Перетворення файлів PostScript EPS або PS у звичайні формати зображень є типовим завданням, яке вам може знадобитися виконати. Якщо у вас велика кількість таких файлів, ефективніше буде конвертувати їх програмним шляхом. Зважаючи на це, ця стаття навчить вас конвертувати файли PostScript EPS/PS у формат зображення PNG або JPG за допомогою C++.
- C++ API для перетворення файлів PostScript EPS/PS на зображення PNG або JPG
- Перетворіть файли PostScript EPS/PS у формат зображення PNG за допомогою C++
- Перетворення файлів PostScript EPS/PS у формат зображення JPG за допомогою C++
C++ API для перетворення файлів PostScript EPS/PS на зображення PNG або JPG
Aspose.Page for C++ — це бібліотека C++ для рендерингу та обробки файлів XPS і PostScript. Ви можете використовувати його для обробки та конвертації файлів XPS і EPS/PS у декілька інших форматів, наприклад PDF, JPEG, BMP, TIFF тощо. Ви можете встановити API через NuGet або завантажити його безпосередньо з розділу завантажень.
PM> Install-Package Aspose.Page.Cpp
Перетворіть файли PostScript EPS/PS у формат зображення PNG за допомогою C++
Нижче наведено кроки для перетворення файлів EPS або PS у формат зображення PNG.
- Ініціалізувати вхідний потік PostScript.
- Створіть екземпляр класу PsDocument за допомогою вхідного потоку.
- Створіть екземпляр об’єкта класу ImageSaveOptions.
- Створіть екземпляр класу ImageDevice.
- Збережіть файл PostScript на ImageDevice за допомогою PsDocument->Save(System::SharedPtr)Aspose::Page::Device пристрій, System::SharedPtr варіанти) метод.
- Отримайте байти зображення за допомогою методу ImageDevice->getImagesBytes().
- Перебір байтів зображення.
- Ініціалізуйте вихідний потік і збережіть зображення PNG.
У наведеному нижче прикладі коду показано, як конвертувати файли PostScript EPS/PS у формат зображення PNG за допомогою C++.
// Створіть екземпляр класу ImageFormat
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Png();
// Ініціалізувати вхідний потік PostScript
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(u"SourceDirectory\\inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Створіть екземпляр класу PsDocument
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);
// Якщо ви хочете конвертувати файл Postscript, незважаючи на незначні помилки, установіть цей прапорець
bool suppressErrors = true;
// Ініціалізуйте об'єкт ImageSaveOptions необхідними параметрами.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);
// Якщо ви хочете додати спеціальну папку, де зберігаються шрифти. Стандартна папка шрифтів в ОС завжди включена.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));
// Стандартним форматом зображення є PNG, і його необов’язково встановлювати в ImageDevice
// Розмір зображення за замовчуванням становить 595x842, і його необов’язково встановлювати в ImageDevice
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>();
// Але якщо вам потрібно вказати розмір і формат зображення, використовуйте конструктор з параметрами
//ImageDevice device = new ImageDevice(new System.Drawing.Size(595, 842), System.Drawing.Imaging.ImageFormat.Jpeg);
{
auto __finally_guard_0 = ::System::MakeScopeGuard([&psStream]()
{
psStream->Close();
});
try
{
document->Save(device, options);
}
catch (...)
{
throw;
}
}
System::ArrayPtr<System::ArrayPtr<uint8_t>> imagesBytes = device->get_ImagesBytes();
int32_t i = 0;
{
for (System::ArrayPtr<uint8_t> imageBytes : imagesBytes)
{
System::String imagePath = System::IO::Path::GetFullPath(System::String(u"OutputDirectory\\out_image") + System::Convert::ToString(i) + u"." + System::ObjectExt::ToString(imageFormat).ToLower());
{
// Ініціалізувати вихідний потік
System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Очищення ресурсів під оператором «використання».
System::Details::DisposeGuard<1> __dispose_guard_1({ fs });
// ----------------------------------------------
try
{
fs->Write(imageBytes, 0, imageBytes->get_Length());
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
}
i++;
}
}
Перетворення файлів PostScript EPS/PS у формат зображення JPG за допомогою C++
Щоб конвертувати файли EPS або PS у формат зображення JPG, виконайте наведені нижче дії.
- Ініціалізувати вхідний потік PostScript.
- Створіть екземпляр класу PsDocument за допомогою вхідного потоку.
- Створіть екземпляр класу ImageSaveOptions.
- Створіть екземпляр об’єкта класу ImageFormat.
- Створіть екземпляр класу ImageDevice за допомогою об’єкта ImageFormat.
- Збережіть файл PostScript на ImageDevice за допомогою PsDocument->Save(System::SharedPtr)Aspose::Page::Device пристрій, System::SharedPtr варіанти) метод.
- Отримайте байти зображення за допомогою методу ImageDevice->getImagesBytes().
- Перебір байтів зображення.
- Ініціалізуйте вихідний потік і збережіть зображення JPG.
Наведений нижче приклад коду демонструє, як конвертувати файли PostScript EPS/PS у формат зображення JPG за допомогою C++.
// Ініціалізувати вхідний потік PostScript
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(u"SourceDirectory\\inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Створіть екземпляр класу PsDocument
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);
// Якщо ви хочете конвертувати файл Postscript, незважаючи на незначні помилки, установіть цей прапорець
bool suppressErrors = true;
// Ініціалізуйте об'єкт ImageSaveOptions необхідними параметрами.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);
// Якщо ви хочете додати спеціальну папку, де зберігаються шрифти. Стандартна папка шрифтів в ОС завжди включена.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));
// Створіть екземпляр класу ImageFormat
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Jpeg();
// Стандартним форматом зображення є PNG, і його необов’язково встановлювати в ImageDevice
// Розмір зображення за замовчуванням становить 595x842, і його необов’язково встановлювати в ImageDevice
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>(imageFormat);
// Але якщо вам потрібно вказати розмір і формат зображення, використовуйте конструктор з параметрами
//ImageDevice device = new ImageDevice(new System.Drawing.Size(595, 842), System.Drawing.Imaging.ImageFormat.Jpeg);
{
auto __finally_guard_0 = ::System::MakeScopeGuard([&psStream]()
{
psStream->Close();
});
try
{
document->Save(device, options);
}
catch (...)
{
throw;
}
}
System::ArrayPtr<System::ArrayPtr<uint8_t>> imagesBytes = device->get_ImagesBytes();
int32_t i = 0;
{
for (System::ArrayPtr<uint8_t> imageBytes : imagesBytes)
{
System::String imagePath = System::IO::Path::GetFullPath(System::String(u"OutputDirectory\\out_image") + System::Convert::ToString(i) + u"." + System::ObjectExt::ToString(imageFormat).ToLower());
{
// Ініціалізувати вихідний потік
System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Очищення ресурсів під оператором «використання».
System::Details::DisposeGuard<1> __dispose_guard_1({ fs });
// ----------------------------------------------
try
{
fs->Write(imageBytes, 0, imageBytes->get_Length());
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
}
i++;
}
}
Отримайте безкоштовну ліцензію
Ви можете спробувати API без обмежень щодо оцінки, надіславши запит на безкоштовну тимчасову ліцензію.
Висновок
У цій статті ви дізналися, як конвертувати файли PostScript EPS/PS у формати зображень PNG і JPG за допомогою C++. Ви бачили повний фрагмент коду разом із кроками, необхідними для цього. Aspose.Page for C++ надає багато додаткових функцій, які ви можете детально вивчити, відвідавши офіційну документацію. У разі будь-яких запитань зв’яжіться з нами на нашому безкоштовному форумі підтримки.