Trabalhar com Imagens em PostScript | .NET
Adicionar Imagem em Documento PS
A biblioteca Aspose.Page para .NET oferece dois métodos para adicionar imagens a um documento PS:
- para imagens opacas;
- para imagens transparentes;
Isto foi feito porque o PostScript não suporta transparência, mas as imagens translúcidas podem ser renderizadas como um conjunto de pixels totalmente transparentes e totalmente opacos. Estas imagens são chamadas de máscaras. Se quisermos ver a imagem translúcida no documento PS como máscara, que refletirá melhor a transparência da imagem, devemos realizar alguma verificação e pré-processamento dessa imagem.
A verificação e o pré-processamento demoram tempo. Portanto, se alguém tiver a certeza de que a imagem é totalmente opaca, é melhor utilizar o primeiro método, pois poupa tempo de execução.
O segundo método reconhece se a imagem é totalmente opaca, totalmente transparente ou translúcida. Se for totalmente opaca, será adicionada como a imagem opaca no primeiro método; se for totalmente transparente, não será adicionada ao documento; se for a imagem translúcida, será adicionada como uma máscara de imagem PostScript.
No exemplo abaixo, demonstramos como adicionar uma imagem totalmente opaca. A adição de uma imagem transparente será demonstrada no artigo “Trabalhar com Transparência”.
Para adicionar uma imagem a um novo PsDocument com a biblioteca Aspose.Page para .NET, neste exemplo, seguimos os seguintes passos:
- Crie um fluxo de saída para o ficheiro PS resultante.
- Crie o objeto PsSaveOptions com as opções padrão.
- Crie um PsDocument de 1 página com um fluxo de saída já criado e guarde as opções.
- Crie um novo estado gráfico.
- Crie System.Drawing.Bitmap a partir do ficheiro de imagem.
- Crie a transformação necessária para a imagem.
- Adicione a imagem ao objeto PsDocument.
- Saia do estado gráfico atual para o nível superior.
- Feche a página.
- Guarde o documento.
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}
Para Linux, MacOS e outros sistemas operativos não Windows, oferecemos a utilização do nosso pacote NuGet Aspose.Page.Drawing. Utiliza o backend Aspose.Drawing em vez da biblioteca de sistema System.Drawing.
Assim, importe o namespace Aspose.Page.Drawing em vez do System.Drawing. No excerto de código acima, será utilizado o Aspose.Page.Drawing.Bitmap em vez do System.Drawing.Bitmap, Aspose.Page.Drawing.Drawing2D.Matrix será utilizado em vez de System.Drawing.Drawing2D.Matrix e assim por diante. Os nossos exemplos de código no GitHub contêm todas as substituições necessárias.
Veja como trabalhar com imagens em documentos PS em Java.
O resultado da execução deste código é apresentado como
Pode descarregar exemplos e ficheiros de dados do GitHub.