Redimensionar EPS | Solução API .NET

Visão geral

Este artigo explica como redimensionar o EPS utilizando C#. Aborda os seguintes tópicos.

Descrição do Redimensionamento EPS em C#

Redimensionar a imagem é uma operação que altera uma das dimensões da imagem, ou ambas: a largura e a altura. O conteúdo da imagem permanece o mesmo, mas a imagem em si pode ser redimensionada dependendo dos novos valores de largura e altura. Se a largura e a altura forem aumentadas proporcionalmente, a representação da imagem EPS será ampliada; caso contrário, será reduzida. Se a largura e a altura forem alteradas de forma desproporcional, a representação resultante da imagem EPS será comprimida ou alongada em alguma direção. O volume do ficheiro EPS permanecerá praticamente inalterado, uma vez que a nossa solução não funciona com o conteúdo, mas sim com o cabeçalho e a secção de configuração do ficheiro EPS.

Para definir um novo tamanho para a representação de uma imagem EPS, é muitas vezes necessário saber o tamanho atual e escolher as unidades para o atribuir. Pode ser em pontos (1/72 de polegada), polegadas, milímetros, centímetros e percentagens. Assim, os passos para redimensionar uma imagem EPS em C# são os seguintes:

  1. Inicialize o objeto PsDocument com um fluxo de entrada contendo o ficheiro EPS.

  2. Extraia o tamanho existente da imagem utilizando o método estático ExtractEpsSize.

  3. Crie um fluxo de saída para o ficheiro EPS resultante.

  4. Redimensione o objeto PsDocument com o novo tamanho nas Unidades selecionadas com o método estático ResizeEps.

Pode verificar a qualidade do Aspose.Page EPS Resize e visualizar os resultados online gratuitamente através do Resize EPS e, em seguida, visualizar o ficheiro EPS resultante com o nosso Visualizador de EPS

Resize EPS setting new size in Points in C#

In the following C# code snippet new size of the image is set by Points (1/72 of inch):

 1// Setting new size of EPS file in points.
 2
 3// Initialize PS document with EPS file
 4PsDocument document = new PsDocument(DataDir + "input.eps");
 5
 6string outputFileName = "output_resize_points.eps";
 7
 8//Get size of EPS image
 9Size oldSize = document.ExtractEpsSize();
10
11//Increase EPS size in 2 times and save to new file
12document.ResizeEps(OutputDir + outputFileName, new SizeF(oldSize.Width * 2, oldSize.Height * 2), Units.Points);

For Linux, MacOS and other non-Windows operation systems we offer to use our Aspose.Page.Drawing Nuget package. It uses Aspose.Drawing backend instead of System.Drawing system library.

So import Aspose.Page.Drawing namespace instead of System.Drawing one. In the above and following code snippets Aspose.Page.Drawing.Size will be used instead of System.Drawing.Size. Our code examples on GitHub contain all the necessary substitutions.

Resize EPS setting new size in Inches in C#

In the following C# code snippet new size of the image is set by Inches:

 1// For complete examples and data files, please go to https://github.com/aspose-page/Aspose.Page-for-.NET
 2
 3// The path to the documents directory.
 4string dataDir = GetDataDir();
 5
 6 //Create an input stream for EPS file
 7using (Stream inputEpsStream = new System.IO.FileStream(dataDir + "input.eps", System.IO.FileMode.Open, System.IO.FileAccess.Read))
 8{
 9    //Initialize PsDocument object with input stream
10    PsDocument doc = new PsDocument(inputEpsStream);
11
12    //Get size of EPS image
13    Size oldSize = doc.ExtractEpsSize();
14
15    //Create an output stream for resized EPS
16    using (Stream outputEpsStream = new System.IO.FileStream(dataDir + "output_resize_inches.eps", System.IO.FileMode.Create, System.IO.FileAccess.Write))
17    {
18        //Save EPS to the output stream with new size assigned in inches
19        doc.ResizeEps(outputEpsStream, new SizeF(5.791f, 3.625f), Units.Inches);
20    }
21}

Resize EPS setting new size in Millimeters in C#

In the following C# code snippet new size of the image is set by Millimeters:

 1// For complete examples and data files, please go to https://github.com/aspose-page/Aspose.Page-for-.NET
 2
 3// The path to the documents directory.
 4string dataDir = GetDataDir();
 5
 6 //Create an input stream for EPS file
 7using (Stream inputEpsStream = new System.IO.FileStream(dataDir + "input.eps", System.IO.FileMode.Open, System.IO.FileAccess.Read))
 8{
 9    //Initialize PsDocument object with input stream
10    PsDocument doc = new PsDocument(inputEpsStream);
11
12    //Get size of EPS image
13    Size oldSize = doc.ExtractEpsSize();
14
15    //Create an output stream for resized EPS
16    using (Stream outputEpsStream = new System.IO.FileStream(dataDir + "output_resize_mms.eps", System.IO.FileMode.Create, System.IO.FileAccess.Write))
17    {
18        //Save EPS to the output stream with new size assigned in millimeters
19        doc.ResizeEps(outputEpsStream, new SizeF(196, 123), Units.Millimeters);
20    }
21}

Resize EPS setting new size in Percents in C#

In the following C# code snippet new size of the image is set by Percents:

 1// For complete examples and data files, please go to https://github.com/aspose-page/Aspose.Page-for-.NET
 2
 3// The path to the documents directory.
 4string dataDir = GetDataDir();
 5
 6 //Create an input stream for EPS file
 7using (Stream inputEpsStream = new System.IO.FileStream(dataDir + "input.eps", System.IO.FileMode.Open, System.IO.FileAccess.Read))
 8{
 9    //Initialize PsDocument object with input stream
10    PsDocument doc = new PsDocument(inputEpsStream);
11
12    //Get size of EPS image
13    Size oldSize = doc.ExtractEpsSize();
14
15    //Create an output stream for resized EPS
16    using (Stream outputEpsStream = new System.IO.FileStream(dataDir + "output_resize_mms.eps", System.IO.FileMode.Create, System.IO.FileAccess.Write))
17    {
18        //Save EPS to the output stream with new size assigned in percents
19        doc.ResizeEps(outputEpsStream, new SizeF(200, 200), Units.Percents);
20    }
21}

See Resize EPS in Java and C++.

Initial EPS Image


Initial image

Resized EPS Image


Resized image

Criação de um Agente de IA para Redimensionamento de EPS

A criação de um Agente de IA generativo para Redimensionamento de EPS tira partido desta regra de escala baseada em cabeçalhos. Pode receber pedidos de escala espacial de múltiplas unidades dos utilizadores, ler os parâmetros iniciais para garantir as proporções corretas e lidar com a execução de forma segura, sem loops de rasterização complexos.

O objetivo da engenharia é criar uma estrutura de orquestração onde uma IA possa receber o pedido do utilizador, calcular as matrizes matemáticas alvo e encaminhar as métricas de forma segura para o compilador de layout programático. O fluxo de trabalho de implementação para tal ferramenta pode ser o seguinte:

  1. Intenção de escala e extração de unidades (camada de análise LLM) O utilizador transmite um ficheiro EPS juntamente com instruções textuais informais (por exemplo, “Dobre o tamanho” ou “Defina a largura para 120 mm”).

O LLM mapeia as strings de entrada conversacionais para variáveis ​​discretas: um valor numérico de destino, uma restrição de eixo de dimensão (largura/altura) e uma definição de unidade explícita que corresponde à enumeração de Unidades.

  1. Análise de tamanho e limites nativos Para calcular o redimensionamento proporcional sem distorcer ou comprimir o gráfico vetorial, o agente deve verificar os parâmetros atuais do ecrã do recurso.

O sistema carrega o ficheiro num fluxo PsDocument e executa document.ExtractEpsSize(). Isto gera uma matriz de definição de limites Size nativa contendo as propriedades de largura e altura absolutas.

  1. Ajuste geométrico proporcional Se a intenção do utilizador exigir a manutenção de uma proporção estrita, mas fornecer apenas uma dimensão (por exemplo, largura), o agente calcula dinamicamente o eixo vetorial de destino em falta.

A IA calcula modificadores de escala proporcionais com base nas restrições de tamanho originais extraídas no passo 2.

Regra de cálculo da proporção de escala

  1. Escalonamento e serialização do recurso (Nó de execução) A carga útil da geometria calculada é passada para o Aspose para corrigir rapidamente os metadados do ficheiro sem exigir loops de renderização estrutural. O sistema executa document.ResizeEps(outputPath, targetSize, Units.[TargetUnit]). Isto atualiza as definições de cabeçalho subjacentes e emite instantaneamente um ficheiro EPS otimizado e de alta fidelidade para o ecrã do endpoint.

Evaluate resizing EPS online on our Resize EPS web application. You can resize EPS file and dowload result in a few seconds.

Pode descarregar exemplos e ficheiros de dados do GitHub.