TIFF của TIF là tên viết tắt của Định dạng tệp hình ảnh thẻ và định dạng này nằm trong số các hình ảnh đồ họa raster phổ biến, được các nghệ sĩ đồ họa, ngành xuất bản và nhiếp ảnh gia sử dụng rộng rãi. TIFF khác với JPEG, GIF và PNG vì đây là định dạng “không nén” và có thể lưu trữ nhiều dữ liệu hình ảnh hơn so với định dạng JPEG của chúng. Giờ đây, một trong những tính năng nổi bật của tệp TIFF là khả năng lưu trữ nhiều hình ảnh (mỗi hình ảnh có nhiều kênh) dưới dạng các khung liên tiếp trong ngăn xếp thời gian hoặc ngăn xếp hình ảnh z. Vì vậy, trong bài viết này, chúng ta sẽ khám phá chi tiết về cách trích xuất khung từ hình ảnh TIFF đa khung bằng Java Cloud SDK.
API xử lý ảnh TIFF
Chúng tôi đã tạo API xử lý hình ảnh cung cấp khả năng chỉnh sửa, thao tác và chuyển đổi raster, siêu tệp, photoshop và Định dạng được hỗ trợ khác sang nhiều định dạng tệp khác nhau. Bây giờ nói về thao tác hình ảnh TIFF, API có rất nhiều khả năng xử lý hình ảnh TIFF. Vì vậy, theo phạm vi của bài viết này, chúng tôi sẽ sử dụng Aspose.Imaging Cloud SDK for Java là một trình bao bọc xung quanh API REST. Vì vậy, bước đầu tiên trong việc sử dụng các khả năng của 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>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>
Bước tiếp theo là lấy chi tiết 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.
Cách trích xuất hình ảnh TIFF trong Java
Hãy cùng khám phá chi tiết cách trích xuất hình ảnh từ tệp tiff bằng đoạn mã Java. Xin lưu ý rằng API cũng cho phép bạn thay đổi kích thước, cắt xén và xoay Lật khung đã trích xuất. Ngoài ra, một trong các tham số boolean saveOtherFrames cho phép bạn chỉ định liệu kết quả sẽ bao gồm tất cả các khung khác hay chỉ một khung được chỉ định.
- Đầ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, đọc nội dung của hình ảnh TIFF đầu tiên bằng phương thức readAllBytes(…) và chuyển đến mảng byte[]
- Thứ ba, tạo một thể hiện của lớp UploadFileRequest nơi chúng tôi chỉ định tên của TIFF trên bộ nhớ Đám mây
- Bây giờ hãy tải hình ảnh TIFF đầu tiên lên bộ nhớ đám mây bằng phương thức uploadFile(…)
- Bước tiếp theo là chỉ định chỉ số khung hình TIFF, chiều cao và chiều rộng của Khung hình được trích xuất, nguồn gốc trích xuất và chỉ định nếu bạn muốn khung hình được trích xuất ở dạng thiên thần cụ thể
- Bây giờ, hãy tạo một đối tượng GetImageFrameRequest nơi chúng tôi chỉ định hình ảnh TIFF đầu vào và các thuộc tính được xác định ở trên
- Gọi phương thức getImageFrame(…) của ImagingAPI để lấy khung TIFF
- Lưu khung đã trích xuất vào ổ đĩa cục bộ bằng đối tượng FileOutputStream
// 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ải hình ảnh TIFF đầu tiên từ hệ thống cục bộ
File file1 = new File("DeskewSampleImage.tif");
byte[] imageStream = Files.readAllBytes(file1.toPath());
// tạo đối tượng yêu cầu tải tệp lên
UploadFileRequest uploadRequest = new UploadFileRequest("input.tiff",imageStream,null);
// tải hình ảnh TIFF đầu tiên lên bộ nhớ Đám mây
imageApi.uploadFile(uploadRequest);
Integer frameId = 0; // Frame number inside TIFF
// chiều rộng và chiều cao mới của khung được trích xuất
Integer newWidth = 1000;
Integer newHeight = 1400;
// nguồn gốc để bắt đầu trích xuất khung
Integer x = 10;
Integer y = 10;
// vùng hình chữ nhật để trích xuất khung
Integer rectWidth = 900;
Integer rectHeight = 800;
// chỉ định góc xoay cho khung TIFF được trích xuất
String rotateFlipMethod = "Rotate90FlipY";
// Kết quả chỉ bao gồm khung được chỉ định chứ không bao gồm các khung khác
Boolean saveOtherFrames = false;
// Tạo một đối tượng yêu cầu để trích xuất các khung tiff dựa trên các chi tiết được chỉ định
GetImageFrameRequest getImageFrameRequest = new GetImageFrameRequest("input.tiff", frameId, newWidth, newHeight,
x, y, rectWidth, rectHeight, null, saveOtherFrames, null, null);
// khung đã trích xuất được trả về trong luồng phản hồi
byte[] updatedImage = imageApi.getImageFrame(getImageFrameRequest);
// Lưu khung TIFF đã trích xuất trên bộ nhớ cục bộ
FileOutputStream fos = new FileOutputStream("/Users/s4/Documents/" + "Extracted-TIFF.tiff");
fos.write(updatedImage);
fos.close();
Có thể tải xuống các hình ảnh TIFF mẫu được sử dụng trong ví dụ trên từ DeskewSampleImage.tif.
Xử lý hình ảnh TIFF bằng lệnh cURL
Một cách thuận tiện khác để truy cập API REST là thông qua các lệnh cURL. Vì Aspose.Imaging Cloud dựa trên kiến trúc REST nên chúng tôi cũng có thể trích xuất các khung hình ảnh tiff bằng các lệnh cURL. Bây giờ, điều kiện tiên quyết của hoạt động này là 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"
Sau khi tạo mã thông báo JWT, chúng ta cần thực hiện lệnh sau để trích xuất khung hình ảnh TIFF.
curl -v -X GET "https://api.aspose.cloud/v3.0/imaging/first.tiff/frames/0?newWidth=1000&newHeight=1200&x=10&y=10&rectWidth=800&rectHeight=800&saveOtherFrames=false" \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>" \
-o ExtractedFrame.tiff
Phần kết luận
Tại thời điểm này, chúng tôi đã tìm hiểu tất cả các chi tiết cần thiết về cách trích xuất hình ảnh từ tệp tiff. Chúng tôi đã khám phá tùy chọn trích xuất khung TIFF bằng cách sử dụng đoạn mã Java Java hoặc thông qua các lệnh cURL. Một cách tiếp cận khác để kiểm tra các tính năng đầy hứa hẹn của API là thông qua SwaggerUI và trong trường hợp bạn muốn sửa đổi mã nguồn của SDK, bạn có thể tải xuống nếu từ GitHub (tất cả SDK đám mây của chúng tôi đều được phát triển bởi MIT giấy phép).
Tuy nhiên, Tài liệu sản phẩm là một nguồn thông tin tuyệt vời để tìm hiểu về các tính năng thú vị khác do API cung cấp. 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 qua miễn phí diễn đàn hỗ trợ sản phẩm.
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ề: