Imagen alineada

Enderezar imagen o enderezar PDF con Java Cloud SDK

Una gran cantidad de imágenes de trama que recibimos para el trabajo y el uso personal son imágenes escaneadas a través de un escáner digital o pueden ser una imagen de un dispositivo móvil. Por lo tanto, hay muchas posibilidades de que el texto dentro de una imagen no esté correctamente alineado y se extienda a través del margen de la página, ya sea horizontal o verticalmente. En palabras simples, las imágenes escaneadas a menudo están torcidas (el papel se movió/rotó) en el escáner. Ahora, para resolver estos problemas, optamos por una técnica llamada enderezamiento, que es un proceso mediante el cual se elimina el sesgo girando una imagen en la misma cantidad que su sesgo pero en la dirección opuesta. La función Alinear es extremadamente útil en el procesamiento automatizado de imágenes, cuando las imágenes provienen de un escáner.

Ahora, en este artículo, estamos analizando los detalles sobre cómo corregir la imagen usando Java Cloud SDK. Por lo tanto, la función de desvío funciona en dos pasos, es decir, detecta el ángulo de desvío de la imagen y luego gira la imagen para corregir el desvío. Podemos aplicar esta operación en los faxes recibidos y usando la información (texto) en la imagen, calcular el ángulo de rotación, no los márgenes del papel y cumplir con el requisito. Sin embargo, entendemos que la operación de alineación de imagen se puede realizar en imágenes en color de 1 bit, 8 bits y 24 bits.

API de imagen de corrección

Para admitir imágenes, tenemos una API basada en REST que ofrece las capacidades para manipular archivos de imágenes en la nube. Ahora, para las aplicaciones Java, hemos desarrollado específicamente Aspose.Imaging Cloud SDK for Java que le permite implementar capacidades de procesamiento de imágenes a través del código Java. Ahora, para enderezar las imágenes usando el SDK de la nube de Java, el primer paso es agregar su referencia en el proyecto Java al incluir la siguiente información en pom.xml (proyecto de tipo de compilación 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>

El siguiente paso es obtener las credenciales de cliente de Cloud Dashboard y, si no tiene una cuenta en Aspose Cloud Dashboard, cree una cuenta gratuita a través de una dirección de correo electrónico válida. Ahora inicie sesión con la cuenta recién creada y busque/cree el ID del cliente y el secreto del cliente en el panel de Aspose Cloud.

Alinear imagen en línea usando Java

Exploremos los detalles sobre cómo enderezar una imagen usando un fragmento de código Java. Para este ejemplo, estamos cargando una imagen TIFF desde el disco local y aplicando la operación de enderezar la foto. El archivo resultante se guarda luego en el almacenamiento en la nube.

  • En primer lugar, cree un objeto de ImagingApi basado en credenciales de cliente personalizadas
  • En segundo lugar, cree una variable booleana que indique cambiar el tamaño de la imagen proporcionalmente
  • Ahora lea el contenido del TIFF fuente usando el método readAllBytes(…) y pase a la matriz byte[]
  • El siguiente paso es crear una instancia de CreateDeskewedImageRequest que requiere una matriz de bytes, un parámetro opcional para el color de fondo y el nombre de la foto enderezada resultante.
  • Finalmente, llame al método createDeskewedImage(…) para enderezar la imagen. El TIFF resultante se almacena en el almacenamiento en la nube
// Obtenga ClientID y ClientSecret de https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";

// crear objeto de imagen
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

// establecer la variable para cambiar el tamaño de la imagen sesgada proporcionalmente
boolean resizeProportionally = true;
			
// información de color de fondo
String bkColor = "white";

// cargar archivo desde disco local
File f = new File("DeskewSampleImage.tiff");

// leer el contenido de la imagen TIFF en una matriz de bytes
byte[] inputStream = Files.readAllBytes(f.toPath());
					    
// crear un objeto para definir las propiedades de la imagen enderezada
CreateDeskewedImageRequest request = new CreateDeskewedImageRequest(inputStream,resizeProportionally,bkColor,"Resultant.tiff",null);

// Ajustar la foto y guardar la salida en el almacenamiento en la nube
imageApi.createDeskewedImage(request);

Ahora, si desea guardar el TIFF resultante en una unidad local/de red, intente utilizar el siguiente fragmento de código.

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

// crear objeto de imagen
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

// establecer la variable para cambiar el tamaño de la imagen sesgada proporcionalmente
boolean resizeProportionally = true;
			
// información de color de fondo
String bkColor = "white";

// cargar archivo desde disco local
File f = new File("DeskewSampleImage.tif");

// leer el contenido de la imagen TIFF en una matriz de bytes
byte[] inputStream = Files.readAllBytes(f.toPath());
					    
// crear un objeto para definir las propiedades de la imagen enderezada
CreateDeskewedImageRequest request = new CreateDeskewedImageRequest(inputStream,resizeProportionally,bkColor,null,null);

// Enderezar la foto y devolver la salida como objeto de flujo
byte[] updatedImage = imageApi.createDeskewedImage(request);

// ruta para almacenar la imagen TIFF actualizada
Path path = Paths.get("/Users/nayyer/Documents/", "DeskewSampleImage_out.tif").toAbsolutePath();

// llamar a la API para enderezar la foto y guardarla en el disco local
Files.write(path, updatedImage);
imagen enderezada

Vista previa de la foto alineada

La imagen TIFF de muestra utilizada en el ejemplo anterior se puede descargar desde DeskewSampleImage.tif.

Enderezar PDF usando comandos cURL

Es posible que recibamos un archivo PDF que contenga imágenes enderezadas, por lo que una solución rápida es extraer imágenes del archivo PDF y luego enderezar las imágenes. Ahora, para cumplir con este requisito, vamos a utilizar dos API en la nube aquí, es decir, Aspose.PDF Cloud para extraer imágenes de un archivo PDF y Aspose.Imaging Cloud para enderezar fotos. Sin embargo, antes de realizar cualquier operación, primero debemos generar un token de acceso JWT (basado en las credenciales del cliente) usando el siguiente 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"

Una vez que tengamos el token JWT, debemos extraer imágenes PDF utilizando la API GrayscaleImage de Aspose.PDF Cloud. Las imágenes se extraen en formato TIFF y se almacenan en la nube.

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>"

Ahora que las imágenes se extraen del archivo PDF como formato TIFF, ahora debemos llamar a la API DeskewImage de Aspose.Imaging Cloud para corregir la imagen. Dado que el archivo resultante se devuelve en el flujo de respuesta, podemos guardarlo en nuestra unidad 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

Conclusión

En este momento, hemos aprendido algunos pasos asombrosos y simples para corregir la imagen y corregir la corrección de PDF utilizando el SDK de la nube de Java. Entonces, ahora podemos cumplir con nuestros requisitos usando un fragmento de código Java o usando los comandos cURL. Al mismo tiempo, le recomendamos encarecidamente que explore la Documentación del producto para obtener más información sobre otras características interesantes que ofrece la API.

Tenga en cuenta que todos nuestros SDK de Cloud están desarrollados con licencia MIT, por lo que el código fuente completo se puede descargar desde GitHub. Por último, en caso de que encuentre algún problema al usar la API, puede considerar comunicarse con nosotros para una resolución rápida a través del foro de soporte del producto gratuito.

Artículos relacionados

Visite los siguientes enlaces para obtener más información sobre: