PostScript EPS 또는 PS 파일을 일반 이미지 형식으로 변환하는 것은 일반적으로 수행해야 하는 작업입니다. 이러한 파일이 많은 경우 프로그래밍 방식으로 변환하는 것이 더 효율적입니다. 이에 비추어 이 기사에서는 C++를 사용하여 PostScript EPS/PS 파일을 PNG 또는 JPG 이미지 형식으로 변환하는 방법을 설명합니다.
- PostScript EPS/PS 파일을 PNG 또는 JPG 이미지로 변환하기 위한 C++ API
- C++를 사용하여 PostScript EPS/PS 파일을 PNG 이미지 형식으로 변환
- C++를 사용하여 PostScript EPS/PS 파일을 JPG 이미지 형식으로 변환
PostScript EPS/PS 파일을 PNG 또는 JPG 이미지로 변환하기 위한 C++ API
Aspose.Page for C++는 XPS 및 PostScript 파일을 렌더링하고 조작하기 위한 C++ 라이브러리입니다. 이를 사용하여 XPS 및 EPS/PS 파일을 PDF, JPEG, BMP, TIFF 등과 같은 여러 다른 형식으로 처리하고 변환할 수 있습니다. NuGet을 통해 API를 설치하거나 다운로드 섹션에서 직접 다운로드할 수 있습니다.
PM> Install-Package Aspose.Page.Cpp
C++를 사용하여 PostScript EPS/PS 파일을 PNG 이미지 형식으로 변환
다음은 EPS 또는 PS 파일을 PNG 이미지 형식으로 변환하는 단계입니다.
- PostScript 입력 스트림을 초기화합니다.
- 입력 스트림을 사용하여 PsDocument 클래스의 인스턴스를 만듭니다.
- ImageSaveOptions 클래스의 개체를 인스턴스화합니다.
- ImageDevice 클래스의 인스턴스를 만듭니다.
- [PsDocument->Save(System::SharedPtr)를 사용하여 PostScript 파일을 ImageDevice에 저장합니다.Aspose::Page::Device 장치, 시스템::SharedPtr 옵션)]14 메서드.
- ImageDevice->getImagesBytes() 메서드를 사용하여 이미지 바이트를 검색합니다.
- 이미지 바이트를 반복합니다.
- 출력 스트림을 초기화하고 PNG 이미지를 저장합니다.
다음 샘플 코드는 C++를 사용하여 PostScript EPS/PS 파일을 PNG 이미지 형식으로 변환하는 방법을 보여줍니다.
// 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);
// 글꼴이 저장되는 특수 폴더를 추가하려는 경우. OS의 기본 글꼴 폴더는 항상 포함됩니다.
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 장치 = 새로운 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);
// '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++;
}
}
C++를 사용하여 PostScript EPS/PS 파일을 JPG 이미지 형식으로 변환
EPS 또는 PS 파일을 JPG 이미지 형식으로 변환하려면 다음 단계를 따르십시오.
- PostScript 입력 스트림을 초기화합니다.
- 입력 스트림을 사용하여 PsDocument 클래스의 인스턴스를 만듭니다.
- ImageSaveOptions 클래스의 인스턴스를 만듭니다.
- ImageFormat 클래스의 개체를 인스턴스화합니다.
- ImageFormat 개체를 사용하여 ImageDevice 클래스의 인스턴스를 만듭니다.
- [PsDocument->Save(System::SharedPtr)를 사용하여 PostScript 파일을 ImageDevice에 저장합니다.Aspose::Page::Device 장치, 시스템::SharedPtr 옵션)]22 메서드.
- ImageDevice->getImagesBytes() 메서드를 사용하여 이미지 바이트를 검색합니다.
- 이미지 바이트를 반복합니다.
- 출력 스트림을 초기화하고 JPG 이미지를 저장합니다.
다음 샘플 코드는 C++를 사용하여 PostScript EPS/PS 파일을 JPG 이미지 형식으로 변환하는 방법을 보여줍니다.
// 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);
// 글꼴이 저장되는 특수 폴더를 추가하려는 경우. OS의 기본 글꼴 폴더는 항상 포함됩니다.
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 장치 = 새로운 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);
// '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++;
}
}
무료 라이선스 받기
무료 임시 라이선스를 요청하면 평가 제한 없이 API를 사용해 볼 수 있습니다.
결론
이 기사에서는 C++를 사용하여 PostScript EPS/PS 파일을 PNG 및 JPG 이미지 형식으로 변환하는 방법을 배웠습니다. 이를 달성하는 데 필요한 단계와 함께 전체 코드 스니펫을 보았습니다. Aspose.Page for C++는 공식 문서를 방문하여 자세히 살펴볼 수 있는 많은 추가 기능을 제공합니다. 질문이 있는 경우 무료 지원 포럼을 통해 언제든지 문의하십시오.