Entzerrungsbild

Entzerren von Bildern oder Entzerren von PDFs mit Java Cloud SDK

Eine große Anzahl von Rasterbildern, die wir für die Arbeit und den persönlichen Gebrauch erhalten, sind gescannte Bilder, entweder durch einen Digitalscanner oder möglicherweise ein Bild von einem mobilen Gerät. Es besteht also die Möglichkeit, dass der Text in einem Bild nicht richtig ausgerichtet ist und entweder horizontal oder vertikal über den Seitenrand verläuft. Mit einfachen Worten, die gescannten Bilder sind auf dem Scanner oft schief (das Papier wurde verschoben/gedreht). Um solche Probleme zu lösen, entscheiden wir uns jetzt für eine Technik namens Entzerrung, bei der die Schräglage entfernt wird, indem ein Bild um denselben Betrag wie seine Schräglage gedreht wird, jedoch in die entgegengesetzte Richtung. Die Deskew-Funktion ist äußerst nützlich bei der automatisierten Bildverarbeitung, wenn die Bilder von einem Scanner stammen.

In diesem Artikel untersuchen wir nun die Details zum Entzerren von Bildern mit Java Cloud SDK. Die Deskew-Funktion arbeitet also in zwei Schritten, dh sie erkennt den Schräglagewinkel des Bildes und dreht dann das Bild, um die Schräglage zu korrigieren. Wir können diese Operation auf empfangene Faxe anwenden und anhand der Informationen (Text) auf dem Bild den Rotationswinkel berechnen, nicht die Ränder des Papiers, und die Anforderung erfüllen. Nichtsdestotrotz verstehen wir, dass die Bildverzerrungsoperation für 1-Bit-, 8-Bit- und 24-Bit-Farbbilder durchgeführt werden kann.

Entzerrungsbild-API

Um Bilder zu unterstützen, haben wir eine REST-basierte API, die die Möglichkeit bietet, Bilddateien in der Cloud zu manipulieren. Für Java-Anwendungen haben wir speziell Aspose.Imaging Cloud SDK for Java entwickelt, mit dem Sie Bildverarbeitungsfunktionen über Java-Code implementieren können. Um Bilder mit dem Java Cloud SDK zu entzerren, besteht der erste Schritt darin, ihre Referenz im Java-Projekt hinzuzufügen, indem die folgenden Informationen in pom.xml (Maven-Build-Typ-Projekt) eingefügt werden.

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

Der nächste Schritt besteht darin, die Client-Anmeldeinformationen von Cloud Dashboard abzurufen. Wenn Sie kein Konto über Aspose Cloud Dashboard haben, erstellen Sie bitte ein kostenloses Konto über eine gültige E-Mail-Adresse. Melden Sie sich jetzt mit dem neu erstellten Konto an und suchen/erstellen Sie die Client-ID und das Client-Secret im Aspose Cloud Dashboard.

Entzerren Sie Bilder online mit Java

Sehen wir uns die Details zum Entzerren von Bildern mit Java-Code-Snippets an. In diesem Beispiel laden wir ein TIFF-Bild von einem lokalen Laufwerk und wenden die Entzerrungsoperation für Fotos an. Die resultierende Datei wird dann im Cloud-Speicher gespeichert.

  • Erstellen Sie zunächst ein ImagingApi-Objekt basierend auf personalisierten Client-Anmeldeinformationen
  • Erstellen Sie zweitens eine boolesche Variable, die angibt, die Größe des Bildes proportional zu ändern
  • Lesen Sie nun den Inhalt des Quell-TIFFs mit der readAllBytes(…)-Methode und übergeben Sie ihn an das byte[]-Array
  • Der nächste Schritt besteht darin, eine Instanz von CreateDeskewedImageRequest zu erstellen, die ein Byte-Array, einen optionalen Parameter für die Hintergrundfarbe und den Namen des resultierenden Deskew-Fotos erfordert
  • Rufen Sie schließlich die Methode createDeskewedImage(…) auf, um das Bild zu entzerren. Das resultierende TIFF wird im Cloud-Speicher gespeichert
// Holen Sie sich ClientID und ClientSecret von https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";

// Imaging-Objekt erstellen
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

// Setze die Variable, um die Größe des entzerrten Bildes proportional zu ändern
boolean resizeProportionally = true;
			
// Informationen zur Hintergrundfarbe
String bkColor = "white";

// Datei vom lokalen Laufwerk laden
File f = new File("DeskewSampleImage.tiff");

// Lesen Sie den Inhalt des TIFF-Bildes in ein Byte-Array
byte[] inputStream = Files.readAllBytes(f.toPath());
					    
// Erstellen Sie ein Objekt, um die Bildeigenschaften zu begradigen
CreateDeskewedImageRequest request = new CreateDeskewedImageRequest(inputStream,resizeProportionally,bkColor,"Resultant.tiff",null);

// Entzerren Sie Fotos und speichern Sie die Ausgabe im Cloud-Speicher
imageApi.createDeskewedImage(request);

Wenn Sie nun das resultierende TIFF auf einem lokalen Laufwerk/Netzlaufwerk speichern möchten, versuchen Sie es bitte mit dem folgenden Code-Snippet.

// Holen Sie sich ClientID und ClientSecret von https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";

// Imaging-Objekt erstellen
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

// Setze die Variable, um die Größe des entzerrten Bildes proportional zu ändern
boolean resizeProportionally = true;
			
// Informationen zur Hintergrundfarbe
String bkColor = "white";

// Datei vom lokalen Laufwerk laden
File f = new File("DeskewSampleImage.tif");

// Lesen Sie den Inhalt des TIFF-Bildes in ein Byte-Array
byte[] inputStream = Files.readAllBytes(f.toPath());
					    
// Erstellen Sie ein Objekt, um die Bildeigenschaften zu begradigen
CreateDeskewedImageRequest request = new CreateDeskewedImageRequest(inputStream,resizeProportionally,bkColor,null,null);

// Entzerren Sie das Foto und geben Sie die Ausgabe als Stream-Objekt zurück
byte[] updatedImage = imageApi.createDeskewedImage(request);

// Pfad zum Speichern des aktualisierten TIFF-Bildes
Path path = Paths.get("/Users/nayyer/Documents/", "DeskewSampleImage_out.tif").toAbsolutePath();

// Rufen Sie die API auf, um das Foto zu entzerren und auf dem lokalen Laufwerk zu speichern
Files.write(path, updatedImage);
Entzerrungsbild

Fotovorschau entzerren

Das im obigen Beispiel verwendete TIFF-Beispielbild kann von DeskewSampleImage.tif heruntergeladen werden.

Entzerren von PDFs mit cURL-Befehlen

Möglicherweise erhalten wir eine PDF-Datei mit entzerrten Bildern. Eine schnelle Lösung besteht darin, Bilder aus der PDF-Datei zu extrahieren und die Bilder dann zu entzerren. Um diese Anforderung zu erfüllen, verwenden wir hier zwei Cloud-APIs, nämlich Aspose.PDF Cloud zum Extrahieren von Bildern aus PDF-Dateien und Aspose.Imaging Cloud zum Entzerren von Fotos. Bevor wir jedoch einen Vorgang ausführen, müssen wir zunächst mit dem folgenden Befehl ein JWT-Zugriffstoken (basierend auf Client-Anmeldeinformationen) generieren.

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"

Sobald wir das JWT-Token haben, müssen wir PDF-Bilder mit der GrayscaleImage-API von Aspose.PDF Cloud extrahieren. Die Bilder werden im TIFF-Format extrahiert und im Cloud-Speicher gespeichert.

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

Nachdem Bilder aus der PDF-Datei im TIFF-Format extrahiert wurden, müssen wir jetzt die DeskewImage-API von Aspose.Imaging Cloud aufrufen, um das Bild zu entzerren. Da die resultierende Datei im Antwortstream zurückgegeben wird, können wir sie auf unserem lokalen Laufwerk speichern.

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

Fazit

Zu diesem Zeitpunkt haben wir einige erstaunliche und einfache Schritte gelernt, um Bilder und PDFs mit dem Java Cloud SDK zu begradigen. Jetzt können wir unsere Anforderungen entweder mit Java-Code-Snippets oder mit den cURL-Befehlen erfüllen. Gleichzeitig empfehlen wir Ihnen dringend, die Produktdokumentation zu lesen, um mehr über andere aufregende Funktionen zu erfahren, die von der API angeboten werden.

Bitte beachten Sie, dass alle unsere Cloud-SDKs unter MIT-Lizenz entwickelt werden, sodass der vollständige Quellcode von GitHub heruntergeladen werden kann. Falls Sie bei der Verwendung der API auf Probleme stoßen, können Sie sich für eine schnelle Lösung über das kostenlose Produkt-Support-Forum an uns wenden.

In Verbindung stehende Artikel

Bitte besuchen Sie die folgenden Links, um mehr darüber zu erfahren: