Một số lượng lớn hình ảnh raster mà chúng tôi nhận được cho công việc và sử dụng cá nhân là hình ảnh được quét qua máy quét kỹ thuật số hoặc có thể là hình ảnh từ thiết bị di động. Vì vậy, có nhiều khả năng văn bản bên trong hình ảnh không được căn chỉnh chính xác và chạy dọc lề trang theo chiều ngang hoặc chiều dọc. Nói một cách đơn giản, các hình ảnh được quét thường bị lệch (giấy bị di chuyển/xoay) trên máy quét. Giờ đây, để giải quyết những vấn đề như vậy, chúng tôi chọn một kỹ thuật có tên là Deskewing, đây là một quy trình theo đó độ nghiêng được loại bỏ bằng cách xoay một hình ảnh theo cùng một mức độ như độ nghiêng của nó nhưng theo hướng ngược lại. Tính năng Deskew cực kỳ hữu ích trong xử lý hình ảnh tự động, khi hình ảnh đến từ máy quét.
Bây giờ trong bài viết này, chúng tôi đang xem xét chi tiết về cách Di chuyển hình ảnh bằng cách sử dụng Java Cloud SDK. Vì vậy, chức năng Deskew hoạt động theo hai bước tức là phát hiện góc nghiêng của hình ảnh và sau đó xoay hình ảnh để điều chỉnh độ lệch. Chúng ta có thể áp dụng thao tác này trên các bản fax đã nhận và sử dụng thông tin (văn bản) trên hình ảnh, tính toán góc xoay chứ không phải lề giấy và thực hiện yêu cầu. Tuy nhiên, chúng tôi hiểu rằng thao tác khử hình ảnh có thể được thực hiện trên các hình ảnh màu 1 bit, 8 bit và 24 bit.
API hình ảnh Deskew
Để hỗ trợ hình ảnh, chúng tôi có API dựa trên REST cung cấp khả năng thao tác với tệp hình ảnh trong Đám mây. Giờ đây, đối với các ứng dụng Java, chúng tôi đã phát triển riêng Aspose.Imaging Cloud SDK for Java cho phép bạn triển khai các khả năng xử lý hình ảnh thông qua mã Java. Bây giờ để Deskew hình ảnh bằng SDK đám mây Java, bước đầu tiên là thêm tham chiếu của nó vào dự án java bằng cách đưa thông tin sau vào pom.xml (dự án kiểu xây dựng 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>
Bước tiếp theo là lấy thông tin đăng nhập của khách hàng từ Cloud Dashboard và nếu bạn không có tài khoản trên Aspose Cloud Dashboard, vui lòng tạo một tài khoản miễn phí thông qua địa chỉ email hợp lệ. Bây giờ hãy đăng nhập bằng tài khoản mới tạo và tra cứu/tạo Client ID và Client Secret tại Aspose Cloud Dashboard.
Deskew Image Online sử dụng Java
Hãy khám phá chi tiết về cách khử hình ảnh bằng đoạn mã Java. Đối với ví dụ này, chúng tôi đang tải hình ảnh TIFF từ ổ đĩa cục bộ và áp dụng thao tác chỉnh sửa ảnh. Tệp kết quả sau đó được lưu vào bộ nhớ đám mây.
- Đầu tiên, tạo một đối tượng của ImagingApi dựa trên thông tin xác thực của khách hàng được cá nhân hóa
- Thứ hai, tạo một biến boolean cho biết thay đổi kích thước hình ảnh theo tỷ lệ
- Bây giờ hãy đọc nội dung của nguồn TIFF bằng phương thức readAllBytes(…) và chuyển tới mảng byte[]
- Bước tiếp theo là tạo một thể hiện của CreateDeskewedImageRequest, yêu cầu mảng Byte, tham số tùy chọn cho màu nền và tên của ảnh Deskew kết quả
- Cuối cùng, gọi phương thức createDeskewedImage(…) để xóa hình ảnh. TIFF kết quả được lưu trữ trong bộ nhớ đám mây
// Nhận ClientID và ClientSecret từ https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";
// tạo đối tượng hình ảnh
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);
// đặt biến để thay đổi kích thước hình ảnh được chỉnh sửa theo tỷ lệ
boolean resizeProportionally = true;
// thông tin màu nền
String bkColor = "white";
// tải tập tin từ ổ đĩa cục bộ
File f = new File("DeskewSampleImage.tiff");
// đọc nội dung của hình ảnh TIFF thành mảng byte
byte[] inputStream = Files.readAllBytes(f.toPath());
// tạo một đối tượng để xác định thuộc tính hình ảnh deskew
CreateDeskewedImageRequest request = new CreateDeskewedImageRequest(inputStream,resizeProportionally,bkColor,"Resultant.tiff",null);
// Chỉnh sửa ảnh và lưu đầu ra trong bộ lưu trữ đám mây
imageApi.createDeskewedImage(request);
Bây giờ nếu bạn muốn lưu TIFF kết quả trên ổ đĩa cục bộ/mạng, vui lòng thử sử dụng đoạn mã sau.
// Nhận ClientID và ClientSecret từ https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";
// tạo đối tượng hình ảnh
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);
// đặt biến để thay đổi kích thước hình ảnh được chỉnh sửa theo tỷ lệ
boolean resizeProportionally = true;
// thông tin màu nền
String bkColor = "white";
// tải tập tin từ ổ đĩa cục bộ
File f = new File("DeskewSampleImage.tif");
// đọc nội dung của hình ảnh TIFF thành mảng byte
byte[] inputStream = Files.readAllBytes(f.toPath());
// tạo một đối tượng để xác định thuộc tính hình ảnh deskew
CreateDeskewedImageRequest request = new CreateDeskewedImageRequest(inputStream,resizeProportionally,bkColor,null,null);
// Xóa ảnh và trả về đầu ra dưới dạng đối tượng luồng
byte[] updatedImage = imageApi.createDeskewedImage(request);
// đường dẫn để lưu trữ hình ảnh TIFF đã cập nhật
Path path = Paths.get("/Users/nayyer/Documents/", "DeskewSampleImage_out.tif").toAbsolutePath();
// gọi API để xóa ảnh và lưu vào ổ đĩa cục bộ
Files.write(path, updatedImage);
Có thể tải xuống hình ảnh TIFF mẫu được sử dụng trong ví dụ trên từ DeskewSampleImage.tif.
Deskew PDF bằng lệnh cURL
Chúng tôi có thể nhận được một tệp PDF có chứa hình ảnh bị xóa, vì vậy một giải pháp nhanh chóng là trích xuất hình ảnh từ tệp PDF và sau đó xóa hình ảnh. Bây giờ để thực hiện yêu cầu này, chúng tôi sẽ sử dụng hai API đám mây ở đây, tức là Aspose.PDF Cloud để trích xuất hình ảnh từ tệp PDF và Aspose.Imaging Cloud để xóa ảnh. Tuy nhiên, trước khi chúng tôi thực hiện bất kỳ thao tác nào, trước tiên chúng tôi cần tạo mã thông báo truy cập JWT (dựa trên thông tin đăng nhập của khách hàng) bằng cách sử dụng lệnh sau.
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"
Khi chúng tôi có mã thông báo JWT, chúng tôi cần trích xuất hình ảnh PDF bằng API GrayscaleImage của Aspose.PDF Cloud. Các hình ảnh được trích xuất ở định dạng TIFF và được lưu trữ trong bộ lưu trữ đám mây.
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>"
Bây giờ hình ảnh được trích xuất từ tệp PDF dưới định dạng TIFF, bây giờ chúng ta cần gọi API DeskewImage của Aspose.Imaging Cloud để xóa hình ảnh. Vì tệp kết quả được trả về trong luồng phản hồi nên chúng tôi có thể lưu tệp đó vào ổ đĩa cục bộ của mình.
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
Phần kết luận
Đến lúc này, chúng ta đã học được một số bước tuyệt vời và đơn giản để xóa hình ảnh cũng như xóa PDF bằng cách sử dụng SDK đám mây Java. Vì vậy, bây giờ chúng tôi có thể thực hiện các yêu cầu của mình bằng cách sử dụng đoạn mã Java hoặc sử dụng các lệnh cURL. Đồng thời, chúng tôi đặc biệt khuyến khích bạn khám phá Tài liệu sản phẩm để tìm hiểu thêm về các tính năng thú vị khác do API cung cấp.
Xin lưu ý rằng tất cả SDK đám mây của chúng tôi đều được phát triển theo giấy phép MIT, vì vậy mã nguồn hoàn chỉnh có thể được tải xuống từ GitHub. Cuối cùng, trong trường hợp bạn gặp phải bất kỳ sự cố nào khi sử dụng API, bạn có thể cân nhắc liên hệ với chúng tôi để được giải quyết nhanh chóng thông qua [diễn đàn hỗ trợ sản phẩm] miễn phí]9.
Những bài viết liên quan
Vui lòng truy cập các liên kết sau để tìm hiểu thêm về: