Duża liczba obrazów rastrowych, które otrzymujemy do pracy i użytku osobistego, to obrazy zeskanowane za pomocą skanera cyfrowego lub mogą to być obrazy z urządzenia mobilnego. Istnieje więc duże prawdopodobieństwo, że tekst wewnątrz obrazu nie jest odpowiednio wyrównany i biegnie wzdłuż marginesu strony w poziomie lub w pionie. Mówiąc prościej, zeskanowane obrazy są często przekrzywione (papier został przesunięty/obrócony) na skanerze. Teraz, aby rozwiązać takie problemy, wybieramy technikę zwaną deskewing, która jest procesem, w którym pochylenie jest usuwane poprzez obracanie obrazu o taką samą wartość jak jego pochylenie, ale w przeciwnym kierunku. Funkcja prostowania jest niezwykle przydatna w automatycznym przetwarzaniu obrazów, gdy obrazy pochodzą ze skanera.
Teraz w tym artykule przyjrzymy się szczegółom, jak prostować obraz za pomocą Java Cloud SDK. Tak więc funkcja prostowania działa dwuetapowo, tzn. wykrywa kąt pochylenia obrazu, a następnie obraca obraz w celu skorygowania pochylenia. Możemy zastosować tę operację na odebranych faksach i korzystając z informacji (tekstu) na obrazie, obliczyć kąt obrotu, a nie marginesy papieru i spełnić wymaganie. Niemniej jednak rozumiemy, że operację prostowania obrazu można wykonać na obrazach kolorowych 1-bitowych, 8-bitowych i 24-bitowych.
- Interfejs API przekośnego obrazu
- Korekta obrazu online przy użyciu języka Java
- Korekta PDF za pomocą poleceń cURL
Interfejs API przekośnego obrazu
W celu obsługi obrazu Posiadamy API oparte na REST, oferujące możliwość manipulowania plikami obrazów w chmurze. Teraz dla aplikacji Java opracowaliśmy specjalnie Aspose.Imaging Cloud SDK for Java, który umożliwia implementację możliwości przetwarzania obrazu za pomocą kodu Java. Teraz, aby prostować obrazy za pomocą pakietu Java Cloud SDK, pierwszym krokiem jest dodanie jego odniesienia do projektu java poprzez uwzględnienie następujących informacji w pliku pom.xml (projekt typu kompilacji maven).
<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>
Następnym krokiem jest uzyskanie poświadczeń klienta z Cloud Dashboard, a jeśli nie masz konta w Aspose Cloud Dashboard, utwórz bezpłatne konto za pomocą prawidłowego adresu e-mail. Teraz zaloguj się przy użyciu nowo utworzonego konta i wyszukaj/utwórz identyfikator klienta i klucz tajny klienta w Aspose Cloud Dashboard.
Korekta obrazu online przy użyciu języka Java
Przyjrzyjmy się szczegółom, jak prostować obraz za pomocą fragmentu kodu Java. W tym przykładzie ładujemy obraz TIFF z dysku lokalnego i stosujemy operację prostowania zdjęcia. Wynikowy plik jest następnie zapisywany w chmurze.
- Najpierw utwórz obiekt ImagingApi na podstawie spersonalizowanych poświadczeń klienta
- Po drugie, utwórz zmienną logiczną, która wskazuje proporcjonalną zmianę rozmiaru obrazu
- Teraz odczytaj zawartość źródłowego TIFFa metodą readAllBytes(…) i przekaż do tablicy byte[].
- Następnym krokiem jest utworzenie instancji CreateDeskewedImageRequest, która wymaga tablicy Byte, opcjonalnego parametru koloru tła i nazwy wynikowego zdjęcia przekosu
- Na koniec wywołaj metodę createDeskewedImage(…), aby wyrównać obraz. Wynikowy plik TIFF jest przechowywany w chmurze
// Uzyskaj ClientID i ClientSecret z https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";
// utwórz obiekt Imaging
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);
// ustaw zmienną, aby proporcjonalnie zmienić rozmiar przekrzywionego obrazu
boolean resizeProportionally = true;
// informacje o kolorze tła
String bkColor = "white";
// załaduj plik z dysku lokalnego
File f = new File("DeskewSampleImage.tiff");
// odczytuje zawartość obrazu TIFF do tablicy bajtów
byte[] inputStream = Files.readAllBytes(f.toPath());
// utwórz obiekt, aby zdefiniować właściwości przekosu obrazu
CreateDeskewedImageRequest request = new CreateDeskewedImageRequest(inputStream,resizeProportionally,bkColor,"Resultant.tiff",null);
// Prostuj zdjęcie i zapisuj dane wyjściowe w chmurze
imageApi.createDeskewedImage(request);
Teraz, jeśli chcesz zapisać wynikowy plik TIFF na dysku lokalnym/sieciowym, spróbuj użyć następującego fragmentu kodu.
// Uzyskaj ClientID i ClientSecret z https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";
// utwórz obiekt Imaging
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);
// ustaw zmienną, aby proporcjonalnie zmienić rozmiar przekrzywionego obrazu
boolean resizeProportionally = true;
// informacje o kolorze tła
String bkColor = "white";
// załaduj plik z dysku lokalnego
File f = new File("DeskewSampleImage.tif");
// odczytuje zawartość obrazu TIFF do tablicy bajtów
byte[] inputStream = Files.readAllBytes(f.toPath());
// utwórz obiekt, aby zdefiniować właściwości przekosu obrazu
CreateDeskewedImageRequest request = new CreateDeskewedImageRequest(inputStream,resizeProportionally,bkColor,null,null);
// Przekoś zdjęcie i zwróć dane wyjściowe jako obiekt strumienia
byte[] updatedImage = imageApi.createDeskewedImage(request);
// ścieżka do przechowywania zaktualizowanego obrazu TIFF
Path path = Paths.get("/Users/nayyer/Documents/", "DeskewSampleImage_out.tif").toAbsolutePath();
// wywołaj interfejs API, aby przekosić zdjęcie i zapisać je na dysku lokalnym
Files.write(path, updatedImage);
Przykładowy obraz TIFF użyty w powyższym przykładzie można pobrać z DeskewSampleImage.tif.
Korekta PDF za pomocą poleceń cURL
Możemy otrzymać plik PDF zawierający przekośne obrazy, więc jednym z szybkich rozwiązań jest wyodrębnienie obrazów z pliku PDF, a następnie przekrzywienie obrazów. Teraz, aby spełnić to wymaganie, użyjemy tutaj dwóch Cloud API, tj. Aspose.PDF Cloud do wyodrębniania obrazów z pliku PDF oraz Aspose.Imaging Cloud do prostowania zdjęć. Zanim jednak wykonamy jakąkolwiek operację, musimy najpierw wygenerować token dostępu JWT (na podstawie poświadczeń klienta) za pomocą następującego polecenia.
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"
Kiedy już mamy token JWT, musimy wyodrębnić obrazy PDF za pomocą GrayscaleImage API z Aspose.PDF Cloud. Obrazy są wyodrębniane w formacie TIFF i przechowywane w chmurze.
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>"
Teraz, gdy obrazy są wyodrębniane z pliku PDF w formacie TIFF, teraz musimy wywołać DeskewImage API z Aspose.Imaging Cloud, aby przekosić obraz. Ponieważ wynikowy plik jest zwracany w strumieniu odpowiedzi, możemy go zapisać na naszym lokalnym dysku.
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
Wniosek
Do tego czasu nauczyliśmy się niesamowitych i prostych kroków prostowania obrazu, a także prostowania PDF za pomocą zestawu Java Cloud SDK. Teraz możemy więc spełnić nasze wymagania za pomocą fragmentu kodu Java lub poleceń cURL. Jednocześnie gorąco zachęcamy do zapoznania się z Dokumentacją produktu, aby dowiedzieć się więcej o innych ekscytujących funkcjach oferowanych przez interfejs API.
Należy pamiętać, że wszystkie nasze zestawy Cloud SDK są opracowywane na licencji MIT, więc pełny kod źródłowy można pobrać z GitHub. Na koniec, jeśli napotkasz jakiekolwiek problemy podczas korzystania z interfejsu API, możesz rozważyć skontaktowanie się z nami w celu uzyskania szybkiego rozwiązania za pośrednictwem bezpłatnego forum wsparcia produktu.
Powiązane artykuły
Odwiedź poniższe linki, aby dowiedzieć się więcej o: