Большое количество растровых изображений, которые мы получаем для работы и личного пользования, являются отсканированными изображениями либо с помощью цифрового сканера, либо могут быть изображением с мобильного устройства. Таким образом, есть большая вероятность, что текст внутри изображения не выровнен должным образом и пересекает поля страницы либо по горизонтали, либо по вертикали. Простыми словами, отсканированные изображения часто перекошены (бумагу передвинули/повернули) на сканере. Теперь, чтобы решить такие проблемы, мы выбираем метод, называемый устранением перекоса, который представляет собой процесс, при котором перекос устраняется путем поворота изображения на ту же величину, что и его перекос, но в противоположном направлении. Функция устранения перекоса чрезвычайно полезна при автоматической обработке изображений, когда изображения поступают со сканера.
В этой статье мы подробно рассмотрим, как исправить перекос изображения с помощью Java Cloud SDK. Таким образом, функция устранения перекоса работает в два этапа, т. е. определяет угол перекоса изображения, а затем поворачивает изображение, чтобы исправить перекос. Мы можем применить эту операцию к полученным факсам и, используя информацию (текст) на изображении, рассчитать угол поворота, а не поля бумаги, и выполнить требование. Тем не менее, мы понимаем, что операция выравнивания изображения может выполняться на 1-битных, 8-битных и 24-битных цветных изображениях.
- API для устранения перекоса изображения
- Устранение перекоса изображения онлайн с помощью Java
- Устранение перекоса PDF с помощью команд cURL
API для устранения перекоса изображения
Для поддержки изображений у нас есть API на основе REST, предлагающий возможности управления файлами изображений в облаке. Теперь для приложений Java мы специально разработали Aspose.Imaging Cloud SDK для Java, который позволяет реализовать возможности обработки изображений с помощью кода Java. Теперь, чтобы устранить перекос изображений с помощью Java Cloud SDK, первым шагом является добавление ссылки на него в проект Java путем включения следующей информации в pom.xml (проект типа сборки 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>
Следующим шагом будет получение учетных данных клиента из Cloud Dashboard. Если у вас нет учетной записи в Aspose Cloud Dashboard, создайте бесплатную учетную запись, используя действующий адрес электронной почты. Теперь войдите в систему, используя только что созданную учетную запись, и найдите/создайте идентификатор клиента и секрет клиента на Aspose Cloud Dashboard.
Устранение перекоса изображения онлайн с помощью Java
Давайте подробно рассмотрим, как исправить перекос изображения с помощью фрагмента кода Java. В этом примере мы загружаем изображение TIFF с локального диска и применяем операцию выравнивания фотографии. Полученный файл затем сохраняется в облачном хранилище.
- Во-первых, создайте объект ImagingApi на основе персонализированных учетных данных клиента.
- Во-вторых, создайте логическую переменную, которая указывает на пропорциональное изменение размера изображения.
- Теперь прочитайте содержимое исходного TIFF с помощью метода readAllBytes(…) и перейдите в массив byte[]
- Следующим шагом является создание экземпляра CreateDeskewedImageRequest, для которого требуется массив байтов, необязательный параметр для цвета фона и имя результирующей фотографии для устранения перекоса.
- Наконец, вызовите метод createDeskewedImage(…) для устранения перекоса изображения. Полученный TIFF сохраняется в облачном хранилище.
// Получите ClientID и ClientSecret с https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";
// создать объект изображения
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);
// установить переменную для пропорционального изменения размера исправленного изображения
boolean resizeProportionally = true;
// информация о цвете фона
String bkColor = "white";
// загрузить файл с локального диска
File f = new File("DeskewSampleImage.tiff");
// прочитать содержимое изображения TIFF в массив байтов
byte[] inputStream = Files.readAllBytes(f.toPath());
// создать объект для определения свойств изображения для устранения перекоса
CreateDeskewedImageRequest request = new CreateDeskewedImageRequest(inputStream,resizeProportionally,bkColor,"Resultant.tiff",null);
// Устранение перекоса фотографии и сохранение результата в облачном хранилище
imageApi.createDeskewedImage(request);
Теперь, если вы хотите сохранить полученный TIFF на локальном/сетевом диске, попробуйте использовать следующий фрагмент кода.
// Получите ClientID и ClientSecret с https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";
// создать объект изображения
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);
// установить переменную для пропорционального изменения размера исправленного изображения
boolean resizeProportionally = true;
// информация о цвете фона
String bkColor = "white";
// загрузить файл с локального диска
File f = new File("DeskewSampleImage.tif");
// прочитать содержимое изображения TIFF в массив байтов
byte[] inputStream = Files.readAllBytes(f.toPath());
// создать объект для определения свойств изображения для устранения перекоса
CreateDeskewedImageRequest request = new CreateDeskewedImageRequest(inputStream,resizeProportionally,bkColor,null,null);
// Выравнивание фотографии и возврат вывода в виде объекта потока
byte[] updatedImage = imageApi.createDeskewedImage(request);
// путь для хранения обновленного изображения TIFF
Path path = Paths.get("/Users/nayyer/Documents/", "DeskewSampleImage_out.tif").toAbsolutePath();
// вызвать API для устранения перекоса фотографии и сохранить ее на локальный диск
Files.write(path, updatedImage);
Образец изображения TIFF, использованный в приведенном выше примере, можно загрузить с DeskewSampleImage.tif.
Устранение перекоса PDF с помощью команд cURL
Мы можем получить PDF-файл, содержащий исправленные изображения, поэтому одним из быстрых решений является извлечение изображений из PDF-файла, а затем устранение скоса изображений. Теперь, чтобы выполнить это требование, мы собираемся использовать здесь два облачных API, а именно Aspose.PDF Cloud для извлечения изображений из файла PDF и Aspose.Imaging Cloud для устранения искажений фотографий. Однако, прежде чем мы выполним какую-либо операцию, сначала нам нужно сначала сгенерировать токен доступа JWT (на основе учетных данных клиента), используя следующую команду.
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"
Получив токен JWT, нам нужно извлечь PDF-изображения с помощью GrayscaleImage API Aspose.PDF Cloud. Изображения извлекаются в формате TIFF и сохраняются в облачном хранилище.
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>"
Теперь, когда изображения извлекаются из файла PDF в формате TIFF, теперь нам нужно вызвать DeskewImage API Aspose.Imaging Cloud для устранения перекоса изображения. Поскольку результирующий файл возвращается в потоке ответов, мы можем сохранить его на наш локальный диск.
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
Заключение
К этому времени мы узнали несколько удивительных и простых шагов по устранению перекоса изображения, а также устранению перекоса PDF с помощью Java Cloud SDK. Итак, теперь мы можем выполнить наши требования либо с помощью фрагмента кода Java, либо с помощью команд cURL. В то же время мы настоятельно рекомендуем вам изучить Документацию по продукту, чтобы узнать больше о других интересных функциях, предлагаемых API.
Обратите внимание, что все наши Cloud SDK разрабатываются под лицензией MIT, поэтому полный исходный код можно загрузить с GitHub. Наконец, если вы обнаружите какие-либо проблемы при использовании API, вы можете обратиться к нам за быстрым решением через бесплатный форум поддержки продукта.
Статьи по Теме
Пожалуйста, перейдите по следующим ссылкам, чтобы узнать больше о: