Робота із зображеннями в PostScript | C++

Додайте зображення в документ PS

Бібліотека Aspose.Page для C++ пропонує два методи додавання зображень до документа PS:

Це було зроблено тому, що PostScript не підтримує прозорість, але напівпрозорі зображення, однак, можна візуалізувати як набір повністю прозорих і повністю непрозорих пікселів. Такі зображення називаються масками. Якщо ми хочемо бачити напівпрозоре зображення в документі PS як маску, яка краще відображатиме прозорість зображення, ми повинні виконати деяку перевірку та попередню обробку такого зображення.

Перевірка та попередня обробка вимагають часу. Тому, якщо хтось впевнений, що зображення повністю непрозоре, краще використовувати перший спосіб, оскільки він економить час виконання.

Другий метод визначає, чи є зображення повністю непрозорим, повністю прозорим чи напівпрозорим. Якщо воно повністю непрозоре, воно додається як непрозоре зображення в першому методі, якщо воно повністю прозоре, воно взагалі не додається до документа, якщо це напівпрозоре зображення, воно додається як маска зображення PostScript.

У прикладі нижче ми демонструємо, як додати повністю непрозоре зображення. Додавання прозорого зображення буде продемонстровано в статті «Робота з прозорістю».

Щоб додати зображення до нового PsDocument за допомогою бібліотеки Aspose.Page для C++ у цьому прикладі, ми виконуємо такі дії:

  1. Створіть вихідний потік для отриманого файлу PS.
  2. Створіть об’єкт PsSaveOptions із параметрами за замовчуванням.
  3. Створіть 1-сторінковий PsDocument із уже створеним вихідним потоком і параметрами збереження.
  4. Створіть новий графічний стан.
  5. Створіть System.Drawing.Bitmap із файлу зображення.
  6. Створіть необхідну трансформацію для зображення.
  7. Додайте зображення до об’єкта PsDocument.
  8. Вихід із поточного стану графіки на верхній рівень.
  9. Закрийте сторінку.
  10. Збережіть документ.
 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.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.