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

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.

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.

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.

Lihat juga