Desenhar imagem

Desvio de imagem ou PDF de desvio usando Java Cloud SDK

Um grande número de imagens raster que recebemos para trabalho e uso pessoal são imagens digitalizadas por meio de um scanner digital ou podem ser uma imagem de um dispositivo móvel. Portanto, há boas chances de que o texto dentro de uma imagem não esteja alinhado corretamente e seja executado na margem da página horizontal ou verticalmente. Em palavras simples, as imagens digitalizadas geralmente ficam tortas (o papel foi movido/girado) no scanner. Agora, para resolver esses problemas, optamos por uma técnica chamada deskewing, que é um processo pelo qual a inclinação é removida girando uma imagem na mesma quantidade que sua inclinação, mas na direção oposta. O recurso Deskew é extremamente útil no processamento automatizado de imagens, quando as imagens vêm de um scanner.

Agora, neste artigo, estamos analisando os detalhes sobre como corrigir a imagem usando o Java Cloud SDK. Assim, a função de enquadramento funciona em duas etapas, ou seja, detecta o ângulo de inclinação da imagem e, em seguida, gira a imagem para corrigir a inclinação. Podemos aplicar esta operação nos faxes recebidos e utilizando a informação (texto) da imagem, calcular o ângulo de rotação, não as margens do papel e cumprir o requisito. No entanto, entendemos que a operação de correção de imagem pode ser executada em imagens coloridas de 1 bit, 8 bits e 24 bits.

API de correção de imagem

Para oferecer suporte à imagem, temos uma API baseada em REST que oferece recursos para manipular arquivos de imagens na nuvem. Agora, para aplicativos Java, desenvolvemos especificamente Aspose.Imaging Cloud SDK for Java que permite implementar recursos de processamento de imagem por meio de código Java. Agora, para corrigir imagens usando Java Cloud SDK, a primeira etapa é adicionar sua referência no projeto Java, incluindo as seguintes informações em pom.xml (projeto de tipo de compilação maven).

<repositories> 
    <repository>
        <id>aspose-cloud</id>
        <name>artifact.aspose-cloud-releases</name>
        <url>http://artifact.aspose.cloud/repo</url>
    </repository>   
</repositories>

<dependencies>
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-imaging-cloud</artifactId>
        <version>22.4</version>
    </dependency>
</dependencies>

A próxima etapa é obter as credenciais do cliente no Cloud Dashboard e, se você não tiver uma conta no Aspose Cloud Dashboard, crie uma conta gratuita por meio de um endereço de e-mail válido. Agora faça o login usando a conta recém-criada e procure/crie o ID do cliente e o segredo do cliente no Aspose Cloud Dashboard.

Desenhar imagem on-line usando Java

Vamos explorar os detalhes sobre como corrigir a imagem usando o trecho de código Java. Para este exemplo, estamos carregando a imagem TIFF da unidade local e aplicamos a operação de enquadramento da foto. O arquivo resultante é salvo no armazenamento em nuvem.

  • Em primeiro lugar, crie um objeto de ImagingApi com base nas credenciais personalizadas do cliente
  • Em segundo lugar, crie uma variável booleana que indique para redimensionar a imagem proporcionalmente
  • Agora leia o conteúdo do TIFF de origem usando o método readAllBytes(…) e passe para o array byte[]
  • A próxima etapa é criar uma instância de CreateDeskewedImageRequest que requer matriz de bytes, parâmetro opcional para cor de fundo e o nome da foto de correção de distorção resultante
  • Finalmente, chame o método createDeskewedImage(…) para corrigir a imagem. O TIFF resultante é armazenado no armazenamento em nuvem
// Obtenha ClientID e ClientSecret em https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";

// criar objeto de imagem
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

// defina a variável para redimensionar a imagem distorcida proporcionalmente
boolean resizeProportionally = true;
			
// informações de cor de fundo
String bkColor = "white";

// carregar arquivo da unidade local
File f = new File("DeskewSampleImage.tiff");

// leia o conteúdo da imagem TIFF para a matriz de bytes
byte[] inputStream = Files.readAllBytes(f.toPath());
					    
// criar um objeto para definir as propriedades da imagem de correção
CreateDeskewedImageRequest request = new CreateDeskewedImageRequest(inputStream,resizeProportionally,bkColor,"Resultant.tiff",null);

// Endireite a foto e salve a saída no armazenamento em nuvem
imageApi.createDeskewedImage(request);

Agora, se você deseja salvar o TIFF resultante na unidade local/de rede, tente usar o seguinte trecho de código.

// Obtenha ClientID e ClientSecret em https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";

// criar objeto de imagem
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

// defina a variável para redimensionar a imagem distorcida proporcionalmente
boolean resizeProportionally = true;
			
// informações de cor de fundo
String bkColor = "white";

// carregar arquivo da unidade local
File f = new File("DeskewSampleImage.tif");

// leia o conteúdo da imagem TIFF para a matriz de bytes
byte[] inputStream = Files.readAllBytes(f.toPath());
					    
// criar um objeto para definir as propriedades da imagem de correção
CreateDeskewedImageRequest request = new CreateDeskewedImageRequest(inputStream,resizeProportionally,bkColor,null,null);

// Endireite a foto e retorne a saída como objeto de fluxo
byte[] updatedImage = imageApi.createDeskewedImage(request);

// caminho para armazenar a imagem TIFF atualizada
Path path = Paths.get("/Users/nayyer/Documents/", "DeskewSampleImage_out.tif").toAbsolutePath();

// chame a API para corrigir a foto e salve na unidade local
Files.write(path, updatedImage);
realinhar imagem

Pré-visualização da foto de correção

A amostra de imagem TIFF usada no exemplo acima pode ser baixada de DeskewSampleImage.tif.

Desenhar PDF usando comandos cURL

Podemos receber um arquivo PDF contendo imagens distorcidas, portanto, uma solução rápida é extrair as imagens do arquivo PDF e, em seguida, realinhar as imagens. Agora, para atender a esse requisito, usaremos duas APIs de nuvem aqui, ou seja, Aspose.PDF Cloud para extrair imagens do arquivo PDF e Aspose.Imaging Cloud para corrigir fotos. No entanto, antes de executar qualquer operação, primeiro precisamos gerar um token de acesso JWT (com base nas credenciais do cliente) usando o seguinte comando.

curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=bb959721-5780-4be6-be35-ff5c3a6aa4a2&client_secret=4d84d5f6584160cbd91dba1fe145db14" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"

Assim que tivermos o token JWT, precisamos extrair as imagens PDF usando a API GrayscaleImage do Aspose.PDF Cloud. As imagens são extraídas em formato TIFF e armazenadas em nuvem.

curl -v -X PUT "https://api.aspose.cloud/v3.0/pdf/Resultant.pdf/pages/1/images/extract/tiff?width=0&height=0" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>"

Agora que as imagens são extraídas do arquivo PDF no formato TIFF, agora precisamos chamar a API DeskewImage do Aspose.Imaging Cloud para corrigir a imagem. Como o arquivo resultante é retornado no fluxo de resposta, podemos salvá-lo em nossa unidade local.

curl -v -X GET "https://api.aspose.cloud/v3.0/imaging/image1.tiff/deskew?resizeProportionally=true&bkColor=White" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>" \
-o Deskewed.tiff

Conclusão

A essa altura, aprendemos algumas etapas incríveis e simples para corrigir a imagem, bem como corrigir o PDF usando o Java Cloud SDK. Portanto, agora podemos cumprir nossos requisitos usando o trecho de código Java ou usando os comandos cURL. Ao mesmo tempo, recomendamos que você explore a Documentação do produto para saber mais sobre outros recursos interessantes oferecidos pela API.

Observe que todos os nossos Cloud SDKs são desenvolvidos sob licença do MIT, portanto, o código-fonte completo pode ser baixado do GitHub. Por fim, caso você encontre algum problema ao usar a API, considere entrar em contato conosco para uma resolução rápida por meio do [fórum de suporte ao produto] gratuito 9.

Artigos relacionados

Por favor, visite os links a seguir para saber mais sobre: