EPS-Größe ändern | C++-API-Lösung
Überblick
In diesem Artikel wird erklärt, wie man die EPS-Größe mithilfe von C++ ändert. Es behandelt die folgenden Themen.
C++-Größenänderungs-EPS-Beschreibung
Bei der Größenänderung eines Bildes handelt es sich um einen Vorgang, der eine oder beide Abmessungen des Bildes ändert: Breite und Höhe. Der Inhalt des Bildes bleibt gleich, das Bild selbst kann jedoch in Abhängigkeit von neuen Werten skaliert werden von Breite und Höhe. Wenn mit und Höhe proportional erhöht werden, wird die Darstellung des EPS-Bildes vergrößert, andernfalls wird sie verkleinert. Wenn Breite und Höhe überproportional verändert werden, ergibt sich das Ergebnis die Darstellung des EPS-Bildes wird in eine bestimmte Richtung komprimiert oder verlängert. Das Volumen der EPS-Datei bleibt nahezu unverändert, da unsere Lösung nicht mit dem Inhalt, sondern mit dem Header und dem Setup-Abschnitt der EPS-Datei funktioniert. Um eine neue Größe für die Darstellung eines EPS-Bildes festzulegen, ist es häufig erforderlich, die vorhandene Größe zu kennen und die Einheiten auszuwählen, in denen die neue Größe zugewiesen werden soll. Es können Punkte (1/72 Zoll), Zoll, Millimeter, Zentimeter und Prozent sein. Daher folgen die Schritte zum Ändern der EPS-Bildgröße in C++:
- Initialisieren Sie das Objekt PsDocument mit einem Eingabestream, der eine EPS-Datei enthält.
- Extrahieren Sie die vorhandene Größe des Bildes mit der statischen Methode ExtractEpsSize.
- Erstellen Sie einen Ausgabestream für die resultierende EPS-Datei.
- Ändern Sie die Größe des PsDocument-Objekts mit der neuen Größe in ausgewählten Einheiten. mit der statischen Methode ResizeEps.
Sie können die Qualität von Aspose.Page EPS Resize überprüfen und die Ergebnisse über die kostenlose Online-Funktion EPS-Größenanpassung anzeigen und dann die resultierende EPS-Datei mit unserem EPS-Viewer anzeigen.
Ändern Sie die EPS-Größe und legen Sie die neue Größe in Punkten in C++ fest
Im folgenden C++-Codeausschnitt wird die neue Größe des Bildes durch Punkte (1/72 Zoll) festgelegt:
1// For complete examples and data files, please go to https://github.com/aspose-page/Aspose.Page-for-C
2
3 // The path to the documents directory.
4 System::String dataDir = RunExamples::GetDataDir_WorkingWithEPS();
5
6 //Create an input stream for EPS file
7 {
8 System::SharedPtr<System::IO::Stream> inputEpsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"input.eps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
9 // Clearing resources under 'using' statement
10 System::Details::DisposeGuard<1> __dispose_guard_1({ inputEpsStream});
11 // ------------------------------------------
12
13 try
14 {
15 //Initialize PsDocument object with input stream
16 System::SharedPtr<PsDocument> doc = System::MakeObject<PsDocument>(inputEpsStream);
17
18 //Get size of EPS image
19 System::Drawing::Size oldSize = doc->ExtractEpsSize();
20
21 //Create an output stream for resized EPS
22 {
23 System::SharedPtr<System::IO::Stream> outputEpsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"output_resize_points.eps", System::IO::FileMode::Create, System::IO::FileAccess::Write);
24 // Clearing resources under 'using' statement
25 System::Details::DisposeGuard<1> __dispose_guard_0({ outputEpsStream});
26 // ------------------------------------------
27
28 try
29 {
30 //Increase EPS size in 2 times and save to the output stream
31 doc->ResizeEps(outputEpsStream, System::Drawing::SizeF(static_cast<float>(oldSize.get_Width() * 2), static_cast<float>(oldSize.get_Height() * 2)), Aspose::Page::Units::Points);
32 }
33 catch(...)
34 {
35 __dispose_guard_0.SetCurrentException(std::current_exception());
36 }
37 }
38 }
39 catch(...)
40 {
41 __dispose_guard_1.SetCurrentException(std::current_exception());
42 }
43 }
Für Linux, MacOS und andere Nicht-Windows-Betriebssysteme bieten wir die Verwendung unseres Nuget-Pakets Aspose.Page.Drawing an. Es verwendet das Aspose.Drawing-Backend anstelle der System.Drawing-Systembibliothek.
Importieren Sie also den Namensraum Aspose.Page.Drawing anstelle des Namensraums System.Drawing. In den obigen und folgenden Codeausschnitten wird Aspose.Page.Drawing.Size anstelle von System.Drawing.Size verwendet. Unsere Codebeispiele auf GitHub enthalten alle notwendigen Ersetzungen.
Ändern Sie die EPS-Größe und stellen Sie die neue Größe in Zoll in C++ ein
Im folgenden C++-Codeausschnitt wird die neue Größe des Bildes in Zoll festgelegt:
1// For complete examples and data files, please go to https://github.com/aspose-page/Aspose.Page-for-C
2
3 // The path to the documents directory.
4 System::String dataDir = RunExamples::GetDataDir_WorkingWithEPS();
5
6 //Create an input stream for EPS file
7 {
8 System::SharedPtr<System::IO::Stream> inputEpsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"input.eps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
9 // Clearing resources under 'using' statement
10 System::Details::DisposeGuard<1> __dispose_guard_1({ inputEpsStream});
11 // ------------------------------------------
12
13 try
14 {
15 //Initialize PsDocument object with input stream
16 System::SharedPtr<PsDocument> doc = System::MakeObject<PsDocument>(inputEpsStream);
17
18 //Get size of EPS image
19 System::Drawing::Size oldSize = doc->ExtractEpsSize();
20
21 //Create an output stream for resized EPS
22 {
23 System::SharedPtr<System::IO::Stream> outputEpsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"output_resize_inches.eps", System::IO::FileMode::Create, System::IO::FileAccess::Write);
24 // Clearing resources under 'using' statement
25 System::Details::DisposeGuard<1> __dispose_guard_0({ outputEpsStream});
26 // ------------------------------------------
27
28 try
29 {
30 //Save EPS to the output stream with new size assigned in inches
31 doc->ResizeEps(outputEpsStream, System::Drawing::SizeF(5.791f, 3.625f), Aspose::Page::Units::Inches);
32 }
33 catch(...)
34 {
35 __dispose_guard_0.SetCurrentException(std::current_exception());
36 }
37 }
38 }
39 catch(...)
40 {
41 __dispose_guard_1.SetCurrentException(std::current_exception());
42 }
43 }
Ändern Sie die EPS-Größe und legen Sie die neue Größe in Millimetern in C++ fest
Im folgenden C++-Codeausschnitt wird die neue Größe des Bildes in Millimetern festgelegt:
1// For complete examples and data files, please go to https://github.com/aspose-page/Aspose.Page-for-C
2
3 // The path to the documents directory.
4 System::String dataDir = RunExamples::GetDataDir_WorkingWithEPS();
5
6 //Create an input stream for EPS file
7 {
8 System::SharedPtr<System::IO::Stream> inputEpsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"input.eps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
9 // Clearing resources under 'using' statement
10 System::Details::DisposeGuard<1> __dispose_guard_1({ inputEpsStream});
11 // ------------------------------------------
12
13 try
14 {
15 //Initialize PsDocument object with input stream
16 System::SharedPtr<PsDocument> doc = System::MakeObject<PsDocument>(inputEpsStream);
17
18 //Get size of EPS image
19 System::Drawing::Size oldSize = doc->ExtractEpsSize();
20
21 //Create an output stream for resized EPS
22 {
23 System::SharedPtr<System::IO::Stream> outputEpsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"output_resize_mms.eps", System::IO::FileMode::Create, System::IO::FileAccess::Write);
24 // Clearing resources under 'using' statement
25 System::Details::DisposeGuard<1> __dispose_guard_0({ outputEpsStream});
26 // ------------------------------------------
27
28 try
29 {
30 //Save EPS to the output stream with new size assigned in millimeters
31 doc->ResizeEps(outputEpsStream, System::Drawing::SizeF(196.0f, 123.0f), Aspose::Page::Units::Millimeters);
32 }
33 catch(...)
34 {
35 __dispose_guard_0.SetCurrentException(std::current_exception());
36 }
37 }
38 }
39 catch(...)
40 {
41 __dispose_guard_1.SetCurrentException(std::current_exception());
42 }
43 }
Ändern Sie die EPS-Größe und legen Sie die neue Größe in Prozent in C++ fest
Im folgenden C++-Codeausschnitt wird die neue Größe des Bildes durch Prozent festgelegt:
1// For complete examples and data files, please go to https://github.com/aspose-page/Aspose.Page-for-C
2
3 // The path to the documents directory.
4 System::String dataDir = RunExamples::GetDataDir_WorkingWithEPS();
5
6 //Create an input stream for EPS file
7 {
8 System::SharedPtr<System::IO::Stream> inputEpsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"input.eps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
9 // Clearing resources under 'using' statement
10 System::Details::DisposeGuard<1> __dispose_guard_1({ inputEpsStream});
11 // ------------------------------------------
12
13 try
14 {
15 //Initialize PsDocument object with input stream
16 System::SharedPtr<PsDocument> doc = System::MakeObject<PsDocument>(inputEpsStream);
17
18 //Get size of EPS image
19 System::Drawing::Size oldSize = doc->ExtractEpsSize();
20
21 //Create an output stream for resized EPS
22 {
23 System::SharedPtr<System::IO::Stream> outputEpsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"output_resize_percents.eps", System::IO::FileMode::Create, System::IO::FileAccess::Write);
24 // Clearing resources under 'using' statement
25 System::Details::DisposeGuard<1> __dispose_guard_0({ outputEpsStream});
26 // ------------------------------------------
27
28 try
29 {
30 //Save EPS to the output stream with new size assigned in percents
31 doc->ResizeEps(outputEpsStream, System::Drawing::SizeF(200.0f, 200.0f), Aspose::Page::Units::Percents);
32 }
33 catch(...)
34 {
35 __dispose_guard_0.SetCurrentException(std::current_exception());
36 }
37 }
38 }
39 catch(...)
40 {
41 __dispose_guard_1.SetCurrentException(std::current_exception());
42 }
43 }
Anfangsbild
Größenanpassung des Bildes
Testen Sie die EPS-Größenänderung online in unserer EPS-Größenänderungs-Webanwendung. Sie können die Größe der EPS-Datei ändern und das Ergebnis in wenigen Sekunden herunterladen.
Sie können Beispiele und Datendateien herunterladen von
GitHub.