PostScript EPS veya PS dosyalarını normal görüntü formatlarına dönüştürmek, yapmanız istenebilecek yaygın bir görevdir. Bu tür çok sayıda dosyanız varsa, bunları programlı olarak dönüştürmek daha verimli olacaktır. Bunun ışığında, bu makale size PostScript EPS/PS dosyalarını C++ kullanarak PNG veya JPG resim formatına nasıl dönüştüreceğinizi öğretecektir.

PostScript EPS/PS Dosyalarını PNG veya JPG Görüntülerine Dönüştürmek için C++ API

Aspose.Page for C++, XPS ve PostScript dosyalarını işlemek ve işlemek için kullanılan bir C++ kitaplığıdır. XPS ve EPS/PS dosyalarını işlemek ve PDF, JPEG, BMP, TIFF vb. gibi çeşitli diğer biçimlere dönüştürmek için kullanabilirsiniz. API’yi NuGet aracılığıyla yükleyebilir veya doğrudan indirilenler bölümünden indirebilirsiniz.

PM> Install-Package Aspose.Page.Cpp

C++ kullanarak PostScript EPS/PS Dosyalarını PNG Görüntü Formatına Dönüştürün

EPS veya PS dosyalarını PNG resim formatına dönüştürmek için gereken adımlar aşağıdadır.

  • PostScript giriş akışını başlatın.
  • Giriş akışını kullanarak PsDocument sınıfının bir örneğini oluşturun.
  • ImageSaveOptions sınıfından bir nesne oluşturun.
  • ImageDevice sınıfının bir örneğini oluşturun.
  • PostScript dosyasını [PsDocument->Save(System::SharedPtr) kullanarak ImageDevice‘a kaydedin.Aspose::Page::Device cihaz, Sistem::SharedPtr seçenekler)]14 yöntemi.
  • ImageDevice->getImagesBytes() yöntemini kullanarak görüntü baytlarını alın.
  • Görüntü baytlarını yineleyin.
  • Çıkış akışını başlatın ve PNG görüntüsünü kaydedin.

Aşağıdaki örnek kod, PostScript EPS/PS dosyalarının C++ kullanılarak PNG görüntü biçimine nasıl dönüştürüleceğini gösterir.

// ImageFormat sınıfının bir örneğini oluşturun
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Png();

// PostScript giriş akışını başlat
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(u"SourceDirectory\\inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);

// PsDocument sınıfının bir örneğini oluşturun
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);

// Küçük hatalara rağmen Postscript dosyasını dönüştürmek istiyorsanız bu bayrağı ayarlayın
bool suppressErrors = true;

// ImageSaveOptions nesnesini gerekli parametrelerle başlatın.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);

// Yazı tiplerinin saklandığı özel bir klasör eklemek istiyorsanız. İşletim sistemindeki varsayılan yazı tipleri klasörü her zaman dahildir.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));

// Varsayılan resim formatı PNG'dir ve ImageDevice'de ayarlanması zorunlu değildir.
// Varsayılan resim boyutu 595x842'dir ve ImageDevice'de ayarlanması zorunlu değildir.
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>();
// Ancak, boyut ve görüntü formatı belirtmeniz gerekirse, yapıcıyı parametrelerle birlikte kullanın.
//ImageDevice aygıtı = yeni ImageDevice(yeni 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());
		{
			// Çıkış akışını başlat
			System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);

			// Kaynakları 'kullanma' ifadesi altında temizleme
			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 Dosyalarını C++ Kullanarak JPG Görüntü Formatına Dönüştürme

EPS veya PS dosyalarını JPG resim formatına dönüştürmek için aşağıda verilen adımları kullanın.

  • PostScript giriş akışını başlatın.
  • Giriş akışını kullanarak PsDocument sınıfının bir örneğini oluşturun.
  • ImageSaveOptions sınıfının bir örneğini oluşturun.
  • ImageFormat sınıfından bir nesne oluşturun.
  • ImageFormat nesnesini kullanarak ImageDevice sınıfının bir örneğini oluşturun.
  • PostScript dosyasını [PsDocument->Save(System::SharedPtr) kullanarak ImageDevice‘a kaydedin.Aspose::Page::Device cihaz, Sistem::SharedPtr seçenekler)]22 yöntemi.
  • ImageDevice->getImagesBytes() yöntemini kullanarak görüntü baytlarını alın.
  • Görüntü baytlarını yineleyin.
  • Çıkış akışını başlatın ve JPG görüntüsünü kaydedin.

Aşağıdaki örnek kod, PostScript EPS/PS dosyalarının C++ kullanılarak JPG görüntü biçimine nasıl dönüştürüleceğini gösterir.

// PostScript giriş akışını başlat
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(u"SourceDirectory\\inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);

// PsDocument sınıfının bir örneğini oluşturun
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);

// Küçük hatalara rağmen Postscript dosyasını dönüştürmek istiyorsanız bu bayrağı ayarlayın
bool suppressErrors = true;

// ImageSaveOptions nesnesini gerekli parametrelerle başlatın.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);

// Yazı tiplerinin saklandığı özel bir klasör eklemek istiyorsanız. İşletim sistemindeki varsayılan yazı tipleri klasörü her zaman dahildir.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));

// ImageFormat sınıfının bir örneğini oluşturun
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Jpeg();

// Varsayılan resim formatı PNG'dir ve ImageDevice'de ayarlanması zorunlu değildir.
// Varsayılan resim boyutu 595x842'dir ve ImageDevice'de ayarlanması zorunlu değildir.
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>(imageFormat);
// Ancak, boyut ve görüntü formatı belirtmeniz gerekirse, yapıcıyı parametrelerle birlikte kullanın.
//ImageDevice aygıtı = yeni ImageDevice(yeni 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());
		{
			// Çıkış akışını başlat
			System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);

			// Kaynakları 'kullanma' ifadesi altında temizleme
			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++;
	}
}

Ücretsiz Lisans Alın

Ücretsiz bir geçici lisans talep ederek API’yi değerlendirme sınırlamaları olmaksızın deneyebilirsiniz.

Çözüm

Bu makalede, C++ kullanarak PostScript EPS/PS dosyalarını PNG ve JPG resim formatlarına nasıl dönüştüreceğinizi öğrendiniz. Bunu başarmak için gerekli adımlarla birlikte kod parçacığının tamamını gördünüz. Aspose.Page for C++, resmi belgeleri ziyaret ederek ayrıntılı olarak keşfedebileceğiniz birçok ek özellik sunar. Herhangi bir sorunuz olursa lütfen ücretsiz destek forumumuzda bize ulaşmaktan çekinmeyin.

Ayrıca bakınız