Scheve afbeelding

Rechtzetten Afbeelding of Rechtzetten PDF met behulp van Java Cloud SDK

Een groot aantal rasterafbeeldingen die we ontvangen voor werk en persoonlijk gebruik, zijn gescande afbeeldingen via een digitale scanner of kunnen een afbeelding van een mobiel apparaat zijn. De kans is dus groot dat de tekst in een afbeelding niet goed is uitgelijnd en horizontaal of verticaal over de paginamarge loopt. Simpel gezegd, de gescande afbeeldingen zijn vaak scheef (het papier is verplaatst/gedraaid) op de scanner. Om dergelijke problemen op te lossen, kiezen we nu voor een techniek genaamd rechtzetten, een proces waarbij scheefheid wordt verwijderd door een afbeelding evenveel te roteren als de scheefheid, maar in de tegenovergestelde richting. De Deskew-functie is uitermate handig bij geautomatiseerde beeldverwerking, wanneer de beelden uit een scanner komen.

In dit artikel bekijken we nu de details over het scheeftrekken van afbeeldingen met behulp van Java Cloud SDK. De functie voor rechtzetten werkt dus in twee stappen, dwz detecteert de scheefstand van het beeld en roteert vervolgens het beeld om de scheefheid te corrigeren. We kunnen deze bewerking toepassen op ontvangen faxen en met behulp van de informatie (tekst) op de afbeelding de hoek van de rotatie berekenen, niet de marges van het papier, en aan de vereiste voldoen. Desalniettemin begrijpen we dat beeldcorrectie kan worden uitgevoerd op 1-bits, 8-bits en 24-bits kleurenafbeeldingen.

Deskew Image-API

Om afbeeldingen te ondersteunen, hebben we een op REST gebaseerde API die de mogelijkheid biedt om afbeeldingenbestanden in de cloud te manipuleren. Voor Java-applicaties hebben we specifiek Aspose.Imaging Cloud SDK for Java ontwikkeld waarmee u mogelijkheden voor beeldverwerking kunt implementeren via Java-code. Om nu afbeeldingen recht te zetten met behulp van Java cloud SDK, is de eerste stap het toevoegen van de referentie in het java-project door de volgende informatie op te nemen in pom.xml (maven build-type project).

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

De volgende stap is het verkrijgen van de klantreferenties van Cloud Dashboard en als u geen account hebt via Aspose Cloud Dashboard, maak dan een gratis account aan via een geldig e-mailadres. Log nu in met een nieuw aangemaakt account en zoek/maak Client ID en Client Secret op bij Aspose Cloud Dashboard.

Scheef beeld online met behulp van Java

Laten we eens kijken naar de details over het rechtzetten van afbeeldingen met behulp van een Java-codefragment. Voor dit voorbeeld laden we een TIFF-afbeelding van een lokaal station en passen we een scheve fotobewerking toe. Het resulterende bestand wordt vervolgens opgeslagen in cloudopslag.

  • Maak eerst een object van ImagingApi op basis van gepersonaliseerde klantreferenties
  • Maak ten tweede een booleaanse variabele die aangeeft dat de grootte van de afbeelding proportioneel moet worden aangepast
  • Lees nu de inhoud van bron-TIFF met behulp van de readAllBytes(…)-methode en geef deze door aan de byte[]-array
  • De volgende stap is het maken van een exemplaar van CreateDeskewedImageRequest waarvoor Byte-array, optionele parameter voor achtergrondkleur en de naam van de resulterende scheve foto nodig zijn
  • Roep ten slotte de methode createDeskewedImage(…) aan om de afbeelding recht te zetten. De resulterende TIFF wordt opgeslagen in cloudopslag
// Haal ClientID en ClientSecret op van https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";

// Imaging-object maken
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

// stel variabele in om de grootte van een scheve afbeelding proportioneel te wijzigen
boolean resizeProportionally = true;
			
// informatie over de achtergrondkleur
String bkColor = "white";

// laad bestand van lokale schijf
File f = new File("DeskewSampleImage.tiff");

// lees de inhoud van TIFF-afbeelding naar byte-array
byte[] inputStream = Files.readAllBytes(f.toPath());
					    
// maak een object om de eigenschappen van een scheve afbeelding te definiëren
CreateDeskewedImageRequest request = new CreateDeskewedImageRequest(inputStream,resizeProportionally,bkColor,"Resultant.tiff",null);

// Zet de foto recht en sla de uitvoer op in cloudopslag
imageApi.createDeskewedImage(request);

Als u nu de resulterende TIFF op een lokale/netwerkschijf wilt opslaan, probeer dan het volgende codefragment te gebruiken.

// Haal ClientID en ClientSecret op van https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";

// Imaging-object maken
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

// stel variabele in om de grootte van een scheve afbeelding proportioneel te wijzigen
boolean resizeProportionally = true;
			
// informatie over de achtergrondkleur
String bkColor = "white";

// laad bestand van lokale schijf
File f = new File("DeskewSampleImage.tif");

// lees de inhoud van TIFF-afbeelding naar byte-array
byte[] inputStream = Files.readAllBytes(f.toPath());
					    
// maak een object om de eigenschappen van een scheve afbeelding te definiëren
CreateDeskewedImageRequest request = new CreateDeskewedImageRequest(inputStream,resizeProportionally,bkColor,null,null);

// Zet de foto recht en retourneer uitvoer als streamobject
byte[] updatedImage = imageApi.createDeskewedImage(request);

// pad om bijgewerkte TIFF-afbeelding op te slaan
Path path = Paths.get("/Users/nayyer/Documents/", "DeskewSampleImage_out.tif").toAbsolutePath();

// roep de API aan om de foto recht te zetten en op te slaan op de lokale schijf
Files.write(path, updatedImage);
scheef beeld

Rechtzetten fotovoorbeeld

De voorbeeld-TIFF-afbeelding die in het bovenstaande voorbeeld wordt gebruikt, kan worden gedownload van DeskewSampleImage.tif.

PDF rechtzetten met behulp van cURL-opdrachten

We kunnen een PDF-bestand ontvangen met scheve afbeeldingen, dus een snelle oplossing is om afbeeldingen uit het PDF-bestand te extraheren en de afbeeldingen vervolgens recht te zetten. Om aan deze vereiste te voldoen, gaan we hier twee Cloud API’s gebruiken, namelijk Aspose.PDF Cloud om afbeeldingen uit PDF-bestanden te extraheren en Aspose.Imaging Cloud om foto’s recht te zetten. Voordat we echter een bewerking uitvoeren, moeten we eerst een JWT-toegangstoken genereren (op basis van clientreferenties) met behulp van de volgende opdracht.

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"

Zodra we het JWT-token hebben, moeten we PDF-afbeeldingen extraheren met de GrayscaleImage API van Aspose.PDF Cloud. De afbeeldingen worden geëxtraheerd in TIFF-indeling en worden opgeslagen in cloudopslag.

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

Nu afbeeldingen uit het PDF-bestand worden geëxtraheerd als TIFF-indeling, moeten we nu de DeskewImage API van Aspose.Imaging Cloud aanroepen om de afbeelding recht te zetten. Aangezien het resulterende bestand wordt geretourneerd in de responsstroom, kunnen we het dus opslaan op onze lokale schijf.

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

Conclusie

Tegen die tijd hebben we een aantal verbazingwekkende en eenvoudige stappen geleerd om zowel afbeeldingen als PDF recht te zetten met behulp van Java Cloud SDK. Dus nu kunnen we aan onze vereisten voldoen met behulp van een Java-codefragment of met behulp van de cURL-commando’s. Tegelijkertijd raden we u ten zeerste aan om Productdocumentatie te verkennen voor meer informatie over andere interessante functies die door de API worden aangeboden.

Houd er rekening mee dat al onze Cloud SDK’s zijn ontwikkeld onder MIT-licentie, dus de volledige broncode kan worden gedownload van GitHub. Als u ten slotte problemen ondervindt tijdens het gebruik van de API, kunt u overwegen ons te benaderen voor een snelle oplossing via het gratis productondersteuningsforum.

gerelateerde artikelen

Bezoek de volgende links voor meer informatie over: