Un număr mare de imagini raster pe care le primim pentru muncă și uz personal sunt imagini scanate fie prin scaner digital, fie pot fi o imagine de pe dispozitivul mobil. Deci, există șanse mari ca textul din interiorul unei imagini să nu fie aliniat corect și să treacă pe marginea paginii orizontal sau vertical. Cu cuvinte simple, imaginile scanate sunt adesea deformate (hârtia a fost mutată/rotită) pe scaner. Acum, pentru a rezolva astfel de probleme, optăm pentru o tehnică numită deskewing, care este un proces prin care deformarea este eliminată prin rotirea unei imagini cu aceeași valoare ca și declinarea acesteia, dar în direcția opusă. Funcția Deskew este extrem de utilă în procesarea automată a imaginilor, atunci când imaginile provin de la un scaner.
Acum, în acest articol, analizăm detaliile despre cum să deskew imaginea folosind Java Cloud SDK. Deci, funcția de declinare funcționează în doi pași, adică detectează unghiul de înclinare a imaginii și apoi rotește imaginea pentru a corecta deformarea. Putem aplica această operațiune pe faxurile primite și folosind informațiile (textul) de pe imagine, să calculăm unghiul de rotație, nu marginile hârtiei și să îndeplinim cerința. Cu toate acestea, înțelegem că operația de declinare a imaginii poate fi efectuată pe imagini color de 1 bit, 8 biți și 24 de biți.
Deskew Image API
Pentru a susține imaginea, avem API bazată pe REST care oferă capabilitățile de a manipula fișierele de imagini în Cloud. Acum, pentru aplicațiile Java, am dezvoltat în mod special Aspose.Imaging Cloud SDK pentru Java care vă permite să implementați capabilități de procesare a imaginilor prin codul Java. Acum, pentru a deskew imagini folosind Java cloud SDK, primul pas este să adăugați referința sa în proiectul java prin includerea următoarelor informații în pom.xml (proiect de tip maven build).
<repositories>
<repository>
<id>aspose-cloud</id>
<name>artifact.aspose-cloud-releases</name>
<url>https://artifact.aspose.cloud/repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-imaging-cloud</artifactId>
<version>22.4</version>
</dependency>
</dependencies>
Următorul pas este să obțineți acreditările clientului de la Cloud Dashboard și dacă nu aveți un cont peste Aspose Cloud Dashboard, vă rugăm să creați un cont gratuit printr-o adresă de e-mail validă. Acum conectați-vă utilizând contul nou creat și căutați/creați ID-ul clientului și Secretul clientului la Aspose Cloud Dashboard.
Deskew Image Online folosind Java
Haideți să explorăm detaliile despre modul de declinare a imaginii folosind fragmentul de cod Java. Pentru acest exemplu, încărcăm imaginea TIFF de pe unitatea locală și aplicăm operația de declinare a fotografiei. Fișierul rezultat este apoi salvat în stocarea în cloud.
- În primul rând, creați un obiect ImagingApi pe baza acreditărilor personalizate ale clientului
- În al doilea rând, creați o variabilă booleană care indică redimensionarea proporțională a imaginii
- Acum citiți conținutul sursei TIFF folosind metoda readAllBytes (…) și treceți la matricea byte[]
- Următorul pas este să creați o instanță de CreateDeskewedImageRequest care necesită o matrice de octeți, un parametru opțional pentru culoarea de fundal și numele fotografiei declinate rezultate.
- În cele din urmă, apelați metoda createDeskewedImage(…) pentru a declina imaginea. TIFF rezultat este stocat în stocarea în cloud
// Obțineți ClientID și ClientSecret de pe https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";
// creați obiectul Imaging
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);
// setați variabila pentru a redimensiona imaginea declinată în mod proporțional
boolean resizeProportionally = true;
// informații despre culoarea de fundal
String bkColor = "white";
// încărcați fișierul de pe unitatea locală
File f = new File("DeskewSampleImage.tiff");
// citiți conținutul imaginii TIFF în matricea de octeți
byte[] inputStream = Files.readAllBytes(f.toPath());
// creați un obiect pentru a defini proprietățile de declinare a imaginii
CreateDeskewedImageRequest request = new CreateDeskewedImageRequest(inputStream,resizeProportionally,bkColor,"Resultant.tiff",null);
// Aliniați fotografia și salvați rezultatul în stocarea în cloud
imageApi.createDeskewedImage(request);
Acum, dacă doriți să salvați TIFF-ul rezultat pe unitatea locală/de rețea, atunci încercați să utilizați următorul fragment de cod.
// Obțineți ClientID și ClientSecret de pe https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";
// creați obiectul Imaging
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);
// setați variabila pentru a redimensiona imaginea declinată în mod proporțional
boolean resizeProportionally = true;
// informații despre culoarea de fundal
String bkColor = "white";
// încărcați fișierul de pe unitatea locală
File f = new File("DeskewSampleImage.tif");
// citiți conținutul imaginii TIFF în matricea de octeți
byte[] inputStream = Files.readAllBytes(f.toPath());
// creați un obiect pentru a defini proprietățile de declinare a imaginii
CreateDeskewedImageRequest request = new CreateDeskewedImageRequest(inputStream,resizeProportionally,bkColor,null,null);
// Declinați fotografia și returnați ieșirea ca obiect de flux
byte[] updatedImage = imageApi.createDeskewedImage(request);
// cale pentru a stoca imaginea TIFF actualizată
Path path = Paths.get("/Users/nayyer/Documents/", "DeskewSampleImage_out.tif").toAbsolutePath();
// apelați API-ul pentru a modifica fotografia și pentru a salva pe unitatea locală
Files.write(path, updatedImage);
Exemplul de imagine TIFF folosit în exemplul de mai sus poate fi descărcat de pe DeskewSampleImage.tif.
Schimbați PDF folosind comenzile cURL
Este posibil să primim un fișier PDF care conține imagini deformate, așa că o soluție rapidă este să extragem imagini din fișierul PDF și apoi să declinăm imaginile. Acum, pentru a îndeplini această cerință, vom folosi aici două API-uri Cloud și anume Aspose.PDF Cloud pentru a extrage imagini din fișierul PDF și Aspose.Imaging Cloud pentru a declina fotografiile. Cu toate acestea, înainte de a efectua orice operație, mai întâi trebuie să generăm un token de acces JWT (pe baza acreditărilor clientului) folosind următoarea comandă.
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"
Odată ce avem jetonul JWT, trebuie să extragem imagini PDF utilizând API-ul GrayscaleImage din Aspose.PDF Cloud. Imaginile sunt extrase în format TIFF și sunt stocate în stocarea în cloud.
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>"
Acum că imaginile sunt extrase din fișierul PDF în format TIFF, acum trebuie să apelăm API-ul DeskewImage al Aspose.Imaging Cloud pentru a declina imaginea. Deoarece fișierul rezultat este returnat în fluxul de răspuns, așa că îl putem salva pe unitatea noastră 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
Concluzie
Până în acest moment, am învățat câțiva pași uimitori și simpli pentru a declina imaginea, precum și pentru a declina PDF-ul utilizând Java cloud SDK. Așa că acum ne putem îndeplini cerințele fie folosind fragmentul de cod Java, fie folosind comenzile cURL. În același timp, vă încurajăm să explorați Product Documentation pentru a afla mai multe despre alte funcții interesante oferite de API.
Vă rugăm să rețineți că toate SDK-urile noastre Cloud sunt dezvoltate sub licență MIT, astfel încât codul sursă complet poate fi descărcat de pe GitHub. În cele din urmă, în cazul în care întâmpinați probleme în timp ce utilizați API-ul, vă recomandăm să ne contactați pentru o rezolvare rapidă prin intermediul gratuit forumul de asistență pentru produse.
Articole similare
Vă rugăm să vizitați următoarele link-uri pentru a afla mai multe despre: