Робота із зображеннями в PostScript | C++
Додайте зображення в документ PS
Бібліотека Aspose.Page для C++ пропонує два методи додавання зображень до документа PS:
- для непрозорих зображень;
- для прозорих зображень;
Це було зроблено тому, що PostScript не підтримує прозорість, але напівпрозорі зображення, однак, можна візуалізувати як набір повністю прозорих і повністю непрозорих пікселів. Такі зображення називаються масками. Якщо ми хочемо бачити напівпрозоре зображення в документі PS як маску, яка краще відображатиме прозорість зображення, ми повинні виконати деяку перевірку та попередню обробку такого зображення.
Перевірка та попередня обробка вимагають часу. Тому, якщо хтось впевнений, що зображення повністю непрозоре, краще використовувати перший спосіб, оскільки він економить час виконання.
Другий метод визначає, чи є зображення повністю непрозорим, повністю прозорим чи напівпрозорим. Якщо воно повністю непрозоре, воно додається як непрозоре зображення в першому методі, якщо воно повністю прозоре, воно взагалі не додається до документа, якщо це напівпрозоре зображення, воно додається як маска зображення PostScript.
У прикладі нижче ми демонструємо, як додати повністю непрозоре зображення. Додавання прозорого зображення буде продемонстровано в статті «Робота з прозорістю».
Щоб додати зображення до нового PsDocument за допомогою бібліотеки Aspose.Page для C++ у цьому прикладі, ми виконуємо такі дії:
- Створіть вихідний потік для отриманого файлу PS.
- Створіть об’єкт PsSaveOptions із параметрами за замовчуванням.
- Створіть 1-сторінковий PsDocument із уже створеним вихідним потоком і параметрами збереження.
- Створіть новий графічний стан.
- Створіть System.Drawing.Bitmap із файлу зображення.
- Створіть необхідну трансформацію для зображення.
- Додайте зображення до об’єкта PsDocument.
- Вихід із поточного стану графіки на верхній рівень.
- Закрийте сторінку.
- Збережіть документ.
1 // The path to the documents directory.
2 System::String dataDir = RunExamples::GetDataDir_WorkingWithImages();
3
4 //Create output stream for PostScript document
5 {
6 System::SharedPtr<System::IO::Stream> outPsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"AddImage_outPS.ps", System::IO::FileMode::Create);
7 // Clearing resources under 'using' statement
8 System::Details::DisposeGuard<1> __dispose_guard_1({ outPsStream});
9 // ------------------------------------------
10
11 try
12 {
13 //Create save options with A4 size
14 System::SharedPtr<PsSaveOptions> options = System::MakeObject<PsSaveOptions>();
15
16 // Create new 1-paged PS Document
17 System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(outPsStream, options, false);
18
19
20 document->WriteGraphicsSave();
21 document->Translate(100.0f, 100.0f);
22
23 //Create a Bitmap object from image file
24 {
25 System::SharedPtr<System::Drawing::Bitmap> image = System::MakeObject<System::Drawing::Bitmap>(dataDir + u"TestImage Format24bppRgb.jpg");
26 // Clearing resources under 'using' statement
27 System::Details::DisposeGuard<1> __dispose_guard_0({ image});
28 // ------------------------------------------
29
30 try
31 {
32 //Create image transform
33 System::SharedPtr<System::Drawing::Drawing2D::Matrix> transform = System::MakeObject<System::Drawing::Drawing2D::Matrix>();
34 transform->Translate(35.0f, 300.0f);
35 transform->Scale(3.0f, 3.0f);
36 transform->Rotate(-45.0f);
37
38 //Add image to document
39 document->DrawImage(image, transform, System::Drawing::Color::Empty);
40 }
41 catch(...)
42 {
43 __dispose_guard_0.SetCurrentException(std::current_exception());
44 }
45 }
46
47 document->WriteGraphicsRestore();
48
49 //Close current page
50 document->ClosePage();
51
52 //Save the document
53 document->Save();
54 }
55 catch(...)
56 {
57 __dispose_guard_1.SetCurrentException(std::current_exception());
58 }
59 }
Див. роботу із зображеннями в документах PS у .NET або [Java](/page/{{lang.url- фрагмент}}java/ps/working-with-images/).
Результат виконання цього коду виглядає як
Ви можете завантажити приклади та файли даних із GitHub.