Chuyển đổi các tệp PostScript EPS hoặc PS sang các định dạng hình ảnh thông thường là một nhiệm vụ phổ biến mà bạn có thể được yêu cầu thực hiện. Nếu bạn có một số lượng lớn các tệp như vậy, sẽ hiệu quả hơn nếu chuyển đổi chúng theo chương trình. Về vấn đề này, bài viết này sẽ hướng dẫn bạn cách chuyển đổi tệp PostScript EPS / PS sang định dạng ảnh PNG hoặc JPG bằng C ++.

API C ++ để chuyển đổi tệp PostScript EPS / PS sang hình ảnh PNG hoặc JPG

Aspose.Page for C ++ là một thư viện C ++ để kết xuất và xử lý các tệp XPS và PostScript. Bạn có thể sử dụng nó để xử lý và chuyển đổi các tệp XPS và EPS / PS sang một số định dạng khác như PDF, JPEG, BMP, TIFF, v.v. Bạn có thể cài đặt API thông qua NuGet hoặc tải xuống trực tiếp từ phần tải xuống.

PM> Install-Package Aspose.Page.Cpp

Chuyển đổi các tệp PostScript EPS / PS sang Định dạng Hình ảnh PNG bằng C ++

Sau đây là các bước để chuyển đổi tệp EPS hoặc PS sang định dạng ảnh PNG.

Đoạn mã mẫu sau đây cho thấy cách chuyển đổi tệp PostScript EPS / PS sang định dạng ảnh PNG bằng C ++.

// Tạo một phiên bản của lớp ImageFormat
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Png();

// Khởi tạo luồng đầu vào PostScript
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(u"SourceDirectory\\inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);

// Tạo một phiên bản của lớp PsDocument
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);

// Nếu bạn muốn chuyển đổi tệp Postscript mặc dù có lỗi nhỏ, hãy đặt cờ này
bool suppressErrors = true;

// Khởi tạo đối tượng ImageSaveOptions với các tham số cần thiết.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);

// Nếu bạn muốn thêm thư mục đặc biệt, nơi các phông chữ được lưu trữ. Thư mục phông chữ mặc định trong hệ điều hành luôn được bao gồm.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));

// Định dạng hình ảnh mặc định là PNG và không bắt buộc phải đặt nó trong ImageDevice
// Kích thước hình ảnh mặc định là 595x842 và không bắt buộc phải đặt nó trong ImageDevice
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>();
// Nhưng nếu bạn cần chỉ định kích thước và định dạng hình ảnh, hãy sử dụng hàm tạo với các tham số
//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());
		{
			// Khởi tạo luồng đầu ra
			System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);

			// Xóa tài nguyên trong câu lệnh 'using'
			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++;
	}
}

Chuyển đổi tệp PostScript EPS / PS sang Định dạng hình ảnh JPG bằng C ++

Để chuyển đổi tệp EPS hoặc PS sang định dạng hình ảnh JPG, hãy sử dụng các bước dưới đây.

Đoạn mã mẫu sau đây trình bày cách chuyển đổi tệp PostScript EPS / PS sang định dạng ảnh JPG bằng C ++.

// Khởi tạo luồng đầu vào PostScript
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(u"SourceDirectory\\inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);

// Tạo một phiên bản của lớp PsDocument
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);

// Nếu bạn muốn chuyển đổi tệp Postscript mặc dù có lỗi nhỏ, hãy đặt cờ này
bool suppressErrors = true;

// Khởi tạo đối tượng ImageSaveOptions với các tham số cần thiết.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);

// Nếu bạn muốn thêm thư mục đặc biệt, nơi các phông chữ được lưu trữ. Thư mục phông chữ mặc định trong hệ điều hành luôn được bao gồm.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));

// Tạo một phiên bản của lớp ImageFormat
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Jpeg();

// Định dạng hình ảnh mặc định là PNG và không bắt buộc phải đặt nó trong ImageDevice
// Kích thước hình ảnh mặc định là 595x842 và không bắt buộc phải đặt nó trong ImageDevice
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>(imageFormat);
// Nhưng nếu bạn cần chỉ định kích thước và định dạng hình ảnh, hãy sử dụng hàm tạo với các tham số
//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());
		{
			// Khởi tạo luồng đầu ra
			System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);

			// Xóa tài nguyên trong câu lệnh 'using'
			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++;
	}
}

Nhận giấy phép miễn phí

Bạn có thể dùng thử API mà không có giới hạn đánh giá bằng cách yêu cầu giấy phép tạm thời miễn phí.

Sự kết luận

Trong bài viết này, bạn đã học cách chuyển đổi tệp PostScript EPS / PS sang định dạng ảnh PNG và JPG bằng C ++. Bạn đã thấy đoạn mã hoàn chỉnh cùng với các bước cần thiết để đạt được điều này. Aspose.Page cho C ++ cung cấp nhiều tính năng bổ sung mà bạn có thể khám phá chi tiết bằng cách truy cập tài liệu chính thức. Trong trường hợp có bất kỳ câu hỏi nào, vui lòng liên hệ với chúng tôi trên diễn đàn hỗ trợ miễn phí của chúng tôi.

Xem thêm