Mengonversi file PostScript EPS atau PS ke format gambar biasa adalah tugas umum yang mungkin harus Anda lakukan. Jika Anda memiliki banyak file seperti itu, akan lebih efisien untuk mengonversinya secara terprogram. Sehubungan dengan hal ini, artikel ini akan mengajarkan Anda cara mengonversi file PostScript EPS/PS ke format gambar PNG atau JPG menggunakan C++.
- C++ API untuk Mengonversi File EPS/PS PostScript ke Gambar PNG atau JPG
- Konversi File EPS/PS PostScript ke Format Gambar PNG menggunakan C++
- Mengubah File EPS/PS PostScript ke Format Gambar JPG menggunakan C++
C++ API untuk Mengonversi File EPS/PS PostScript ke Gambar PNG atau JPG
Aspose.Page for C++ adalah library C++ untuk merender dan memanipulasi XPS dan file PostScript. Anda dapat menggunakannya untuk memproses dan mengonversi file XPS dan EPS/PS ke beberapa format lain seperti PDF, JPEG, BMP, TIFF, dll. Anda dapat menginstal API melalui NuGet atau mengunduhnya langsung dari bagian unduhan.
PM> Install-Package Aspose.Page.Cpp
Konversi File EPS/PS PostScript ke Format Gambar PNG menggunakan C++
Berikut langkah-langkah untuk mengubah file EPS atau PS ke format gambar PNG.
- Inisialisasi input stream PostScript.
- Buat instance dari kelas PsDocument menggunakan input stream.
- Buat instance objek dari kelas ImageSaveOptions.
- Buat instance dari kelas ImageDevice.
- Simpan file PostScript ke ImageDevice menggunakan PsDocument->Save(System::SharedPtrAspose::Page::Device perangkat, Sistem::SharedPtr pilihan) metode.
- Ambil byte gambar menggunakan metode ImageDevice->getImagesBytes().
- Iterasi melalui byte gambar.
- Inisialisasi aliran keluaran dan simpan gambar PNG.
Kode contoh berikut menunjukkan cara mengonversi file PostScript EPS/PS ke format gambar PNG menggunakan C++.
// Buat instance kelas ImageFormat
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Png();
// Inisialisasi aliran masukan PostScript
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(u"SourceDirectory\\inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Buat instance dari kelas PsDocument
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);
// Jika Anda ingin mengonversi file Postscript meskipun ada kesalahan kecil, atur flag ini
bool suppressErrors = true;
// Inisialisasi objek ImageSaveOptions dengan parameter yang diperlukan.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);
// Jika ingin menambahkan folder khusus tempat font disimpan. Folder font default di OS selalu disertakan.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));
// Format gambar default adalah PNG dan tidak wajib untuk mengaturnya di ImageDevice
// Ukuran gambar default adalah 595x842 dan tidak wajib untuk mengaturnya di ImageDevice
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>();
// Tetapi jika Anda perlu menentukan ukuran dan format gambar, gunakan konstruktor dengan parameter
//Perangkat ImageDevice = ImageDevice baru (System.Drawing.Size baru (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());
{
// Inisialisasi aliran keluaran
System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Menghapus sumber daya di bawah pernyataan 'menggunakan'
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++;
}
}
Mengubah File EPS/PS PostScript ke Format Gambar JPG menggunakan C++
Untuk mengonversi file EPS atau PS ke format gambar JPG, gunakan langkah-langkah yang diberikan di bawah ini.
- Inisialisasi input stream PostScript.
- Buat instance dari kelas PsDocument menggunakan input stream.
- Buat instance dari kelas ImageSaveOptions.
- Buat instance objek dari kelas ImageFormat.
- Buat instance kelas ImageDevice menggunakan objek ImageFormat.
- Simpan file PostScript ke ImageDevice menggunakan PsDocument->Save(System::SharedPtrAspose::Page::Device perangkat, Sistem::SharedPtr pilihan) metode.
- Ambil byte gambar menggunakan metode ImageDevice->getImagesBytes().
- Iterasi melalui byte gambar.
- Inisialisasi aliran keluaran dan simpan gambar JPG.
Kode contoh berikut menunjukkan cara mengonversi file PostScript EPS/PS ke format gambar JPG menggunakan C++.
// Inisialisasi aliran masukan PostScript
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(u"SourceDirectory\\inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Buat instance dari kelas PsDocument
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);
// Jika Anda ingin mengonversi file Postscript meskipun ada kesalahan kecil, atur flag ini
bool suppressErrors = true;
// Inisialisasi objek ImageSaveOptions dengan parameter yang diperlukan.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);
// Jika ingin menambahkan folder khusus tempat font disimpan. Folder font default di OS selalu disertakan.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));
// Buat instance kelas ImageFormat
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Jpeg();
// Format gambar default adalah PNG dan tidak wajib untuk mengaturnya di ImageDevice
// Ukuran gambar default adalah 595x842 dan tidak wajib untuk mengaturnya di ImageDevice
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>(imageFormat);
// Tetapi jika Anda perlu menentukan ukuran dan format gambar, gunakan konstruktor dengan parameter
//Perangkat ImageDevice = ImageDevice baru (System.Drawing.Size baru (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());
{
// Inisialisasi aliran keluaran
System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Menghapus sumber daya di bawah pernyataan 'menggunakan'
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++;
}
}
Dapatkan Lisensi Gratis
Anda dapat mencoba API tanpa batasan evaluasi dengan meminta lisensi sementara gratis.
Kesimpulan
Pada artikel ini, Anda telah mempelajari cara mengonversi file EPS/PS PostScript ke format gambar PNG dan JPG menggunakan C++. Anda telah melihat cuplikan kode lengkap beserta langkah-langkah yang diperlukan untuk mencapainya. Aspose.Page for C++ menyediakan banyak fitur tambahan yang dapat Anda jelajahi secara mendetail dengan mengunjungi dokumentasi resmi. Jika ada pertanyaan, jangan ragu untuk menghubungi kami di forum dukungan gratis.