המרת קבצי PostScript EPS או PS לפורמטים רגילים של תמונה היא משימה נפוצה שאולי תידרש לעשות. אם יש לך מספר רב של קבצים כאלה, יהיה יעיל יותר להמיר אותם באופן תוכנתי. לאור זאת, מאמר זה ילמד אותך כיצד להמיר קבצי PostScript EPS/PS לפורמט תמונה PNG או JPG באמצעות C++.

C++ API להמרת קבצי PostScript EPS/PS לתמונות PNG או JPG

Aspose.Page for C++ היא ספריית C++ לעיבוד ולטפל בקובצי XPS ו-PostScript. אתה יכול להשתמש בו כדי לעבד ולהמיר קובצי XPS ו-EPS/PS למספר פורמטים אחרים כגון PDF, JPEG, BMP, TIFF וכו’. אתה יכול להתקין את ה-API דרך NuGet או להוריד אותו ישירות מהקטע הורדות.

PM> Install-Package Aspose.Page.Cpp

המר קבצי PostScript EPS/PS לפורמט תמונה PNG באמצעות C++

להלן השלבים להמרת קבצי EPS או PS לפורמט תמונה PNG.

  • אתחול זרם הקלט של PostScript.
  • צור מופע של המחלקה PsDocument באמצעות זרם הקלט.
  • הצג אובייקט מהמחלקה ImageSaveOptions.
  • צור מופע של המחלקה ImageDevice.
  • שמור את קובץ PostScript ב-ImageDevice באמצעות ה-[PsDocument->Save(System::SharedPtr)Aspose::Page::Device מכשיר, System::SharedPtr אפשרויות) שיטת 14.
  • אחזר את בתים של התמונה באמצעות השיטה ImageDevice->getImagesBytes().
  • חזור על בתים של התמונה.
  • אתחל את זרם הפלט ושמור את תמונת ה-PNG.

הקוד לדוגמה הבא מראה כיצד להמיר קובצי PostScript EPS/PS לפורמט תמונה PNG באמצעות C++.

// צור מופע של המחלקה 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);

// אם אתה רוצה להוסיף תיקיה מיוחדת שבה מאוחסנים גופנים. תיקיית ברירת המחדל של גופנים במערכת ההפעלה כלולה תמיד.
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 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());
		{
			// אתחול זרם הפלט
			System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);

			// ניקוי משאבים תחת הצהרת 'משתמש'
			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 לפורמט תמונה JPG באמצעות C++

על מנת להמיר קבצי EPS או PS לפורמט תמונה JPG, השתמש בשלבים המפורטים להלן.

  • אתחול זרם הקלט של PostScript.
  • צור מופע של המחלקה PsDocument באמצעות זרם הקלט.
  • צור מופע של המחלקה ImageSaveOptions.
  • הצג אובייקט מהמחלקה ImageFormat.
  • צור מופע של המחלקה ImageDevice באמצעות האובייקט ImageFormat.
  • שמור את קובץ PostScript ב-ImageDevice באמצעות ה-[PsDocument->Save(System::SharedPtr)Aspose::Page::Device מכשיר, System::SharedPtr אפשרויות) שיטת 22.
  • אחזר את בתים של התמונה באמצעות השיטה ImageDevice->getImagesBytes().
  • חזור על בתים של התמונה.
  • אתחל את זרם הפלט ושמור את תמונת ה-JPG.

הקוד לדוגמה הבא מדגים כיצד להמיר קובצי PostScript EPS/PS לפורמט תמונה JPG באמצעות C++.

// אתחול זרם קלט 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);

// אם אתה רוצה להוסיף תיקיה מיוחדת שבה מאוחסנים גופנים. תיקיית ברירת המחדל של גופנים במערכת ההפעלה כלולה תמיד.
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 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());
		{
			// אתחול זרם הפלט
			System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);

			// ניקוי משאבים תחת הצהרת 'משתמש'
			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 ללא מגבלות הערכה על ידי בקשת רישיון זמני ללא תשלום.

סיכום

במאמר זה, למדת כיצד להמיר קובצי PostScript EPS/PS לפורמטים של תמונה PNG ו-JPG באמצעות C++. ראית את קטע הקוד המלא יחד עם השלבים הדרושים כדי להשיג זאת. Aspose.Page for C++ מספק תכונות נוספות רבות שתוכל לחקור בפירוט על ידי ביקור בתיעוד הרשמי. בכל שאלה, אנא אל תהסס לפנות אלינו בפורום התמיכה החינמי שלנו.

ראה גם