Работа с изображениями в PostScript | .NET
Добавить изображение в документ PS
Библиотека Aspose.Page для .NET предлагает два метода добавления изображений в документ PS:
- для непрозрачных изображений;
- для прозрачных изображений;
Это было сделано потому, что PostScript не поддерживает прозрачность, однако полупрозрачные изображения можно визуализировать как набор полностью прозрачных и полностью непрозрачных пикселей. Такие изображения называются масками. Если мы хотим видеть полупрозрачное изображение в документе PS как маску, которая будет лучше отражать прозрачность изображения, нам следует выполнить некоторую проверку и предварительную обработку такого изображения.
Проверка и предварительная обработка требуют времени. Поэтому, если кто-то уверен, что изображение полностью непрозрачно, лучше использовать первый метод, поскольку он экономит время выполнения.
Второй метод определяет, является ли изображение полностью непрозрачным, полностью прозрачным или полупрозрачным. Если оно полностью непрозрачно, оно добавляется как непрозрачное изображение в первом методе. если оно полностью прозрачное, оно вообще не добавляется в документ, если это полупрозрачное изображение, оно добавляется как маска изображения PostScript.
В примере ниже мы демонстрируем, как добавить полностью непрозрачное изображение. Добавление прозрачного изображения будет показано в статье «Работа с прозрачностью».
Чтобы добавить изображение в новый PsDocument с помощью библиотеки Aspose.Page для .NET в этом примере, мы выполняем следующие шаги:
- Создайте выходной поток для полученного PS-файла.
- Создайте объект PsSaveOptions с параметрами по умолчанию.
- Создайте одностраничный PsDocument с уже созданным потоком вывода и сохраните параметры.
- Создайте новое графическое состояние.
- Создайте System.Drawing.Bitmap из файла изображения.
- Создайте необходимое преобразование изображения.
- Добавьте изображение в объект PsDocument.
- Выход из текущего состояния графики на верхний уровень.
- Закройте страницу.
- Сохраните документ.
1//Create an output stream for PostScript document
2using (Stream outPsStream = new FileStream(dataDir + "AddImage_outPS.ps", FileMode.Create))
3{
4 //Create save options with A4 size
5 PsSaveOptions options = new PsSaveOptions();
6
7 // Create new 1-paged PS Document
8 PsDocument document = new PsDocument(outPsStream, options, false);
9
10
11 document.WriteGraphicsSave();
12 document.Translate(100, 100);
13
14 //Create a Bitmap object from image file
15 using (Bitmap image = new Bitmap(dataDir + "TestImage Format24bppRgb.jpg"))
16 {
17 //Create image transform
18 Matrix transform = new Matrix();
19 transform.Translate(35, 300);
20 transform.Scale(3, 3);
21 transform.Rotate(-45);
22
23 //Add the image to document
24 document.DrawImage(image, transform, Color.Empty);
25 }
26
27 document.WriteGraphicsRestore();
28
29 //Close current page
30 document.ClosePage();
31
32 //Save the document
33 document.Save();
34}
Для Linux, MacOS и других операционных систем, отличных от Windows, мы предлагаем использовать наш пакет Nuget Aspose.Page.Drawing. Он использует серверную часть Aspose.Drawing вместо системной библиотеки System.Drawing.
Поэтому импортируйте пространство имен Aspose.Page.Drawing вместо System.Drawing. В приведенном выше фрагменте кода вместо System.Drawing.Bitmap будет использоваться Aspose.Page.Drawing.Bitmap, вместо System.Drawing.Drawing2D.Matrix и так далее будет использоваться Aspose.Page.Drawing.Drawing2D.Matrix. Наши примеры кода на GitHub содержат все необходимые замены.
См. работу с изображениями в документах PS в Java.
Результат запуска этого кода выглядит так:
Вы можете загрузить примеры и файлы данных с сайта GitHub.