TIFF od TIF to skrót od Tag Image File Format i jednego z popularnych obrazów grafiki rastrowej, powszechnie używanych przez grafików, przemysł wydawniczy i fotografów. TIFF różni się od JPEG, GIF i PNG, ponieważ jest to format „nieskompresowany” i może przechowywać znacznie więcej danych obrazu niż ich odpowiedniki w formacie JPEG. Obecnie jedną z wyróżniających się cech plików TIFF jest możliwość przechowywania wielu obrazów (z których każdy ma wiele kanałów) jako sekwencyjne klatki w stosie czasowym lub stosie z obrazów. Dlatego w tym artykule przyjrzymy się szczegółom, jak wyodrębnić ramki z wieloramkowych obrazów TIFF za pomocą Java Cloud SDK.
- Interfejs API przetwarzania obrazu TIFF
- Jak wyodrębnić obraz TIFF w Javie
- Przetwarzanie obrazu TIFF za pomocą poleceń cURL
Interfejs API przetwarzania obrazu TIFF
Stworzyliśmy interfejs API przetwarzania obrazu, który oferuje możliwości edytowania, manipulowania i przekształcania plików rastrowych, metaplików, Photoshopa i innych obsługiwanych formatów do różnych formatów plików. Mówiąc o manipulacji obrazami TIFF, interfejs API jest bardzo zdolny do przetwarzania obrazów TIFF. Zgodnie z zakresem tego artykułu użyjemy Aspose.Imaging Cloud SDK for Java, który jest opakowaniem wokół REST API. Tak więc pierwszym krokiem w wykorzystaniu jego możliwości jest dodanie jego odniesienia do projektu java poprzez włączenie następujących informacji do pliku pom.xml (projekt typu kompilacji 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>
Następnym krokiem jest uzyskanie danych uwierzytelniających klienta z Cloud Dashboard, a jeśli nie masz konta w Aspose Cloud Dashboard, utwórz darmowe 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.
Jak wyodrębnić obraz TIFF w Javie
Przyjrzyjmy się szczegółom, jak wyodrębnić obrazy z plików tiff za pomocą fragmentu kodu Java. Należy pamiętać, że interfejs API umożliwia również zmianę rozmiaru, przycinanie i obracanie Odwróć wyodrębnioną ramkę. Ponadto jeden z boolowskich parametrów saveOtherFrames pozwala określić, czy wynik będzie zawierał wszystkie inne ramki, czy tylko określoną ramkę.
- Najpierw utwórz obiekt ImagingApi na podstawie spersonalizowanych poświadczeń klienta
- Po drugie, odczytujemy zawartość pierwszego obrazka TIFF metodą readAllBytes(…) i przekazujemy do tablicy byte[]
- Po trzecie, utwórz instancję klasy UploadFileRequest, w której podajemy nazwę TIFF over storage w chmurze
- Teraz prześlij pierwszy obraz TIFF do magazynu w chmurze za pomocą metody uploadFile(…).
- Następnym krokiem jest określenie indeksu ramki TIFF, wysokości i szerokości wyodrębnionej klatki, pochodzenia wyodrębnienia i określenie, czy wyodrębniona klatka ma być w określonym aniele
- Teraz utwórz obiekt GetImageFrameRequest, w którym określimy wejściowy obraz TIFF i powyżej zdefiniowane właściwości
- Wywołaj metodę getImageFrame(…) ImagingAPI, aby uzyskać ramkę TIFF
- Zapisz wyodrębnioną ramkę na dysku lokalnym za pomocą obiektu FileOutputStream
// 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);
// załaduj pierwszy obraz TIFF z systemu lokalnego
File file1 = new File("DeskewSampleImage.tif");
byte[] imageStream = Files.readAllBytes(file1.toPath());
// utwórz obiekt żądania przesłania pliku
UploadFileRequest uploadRequest = new UploadFileRequest("input.tiff",imageStream,null);
// prześlij pierwszy obraz TIFF do magazynu w chmurze
imageApi.uploadFile(uploadRequest);
Integer frameId = 0; // Frame number inside TIFF
// nowa szerokość i wysokość wyodrębnionej ramki
Integer newWidth = 1000;
Integer newHeight = 1400;
// origin, aby rozpocząć wyodrębnianie ramek
Integer x = 10;
Integer y = 10;
// prostokątny region, aby wyodrębnić ramkę
Integer rectWidth = 900;
Integer rectHeight = 800;
// określ kąt obrotu wyodrębnionej ramki TIFF
String rotateFlipMethod = "Rotate90FlipY";
// Powoduje uwzględnienie tylko określonej klatki, a nie innych ramek
Boolean saveOtherFrames = false;
// Utwórz obiekt żądania, aby wyodrębnić ramki tiff na podstawie określonych szczegółów
GetImageFrameRequest getImageFrameRequest = new GetImageFrameRequest("input.tiff", frameId, newWidth, newHeight,
x, y, rectWidth, rectHeight, null, saveOtherFrames, null, null);
// wyodrębniona ramka jest zwracana w strumieniu odpowiedzi
byte[] updatedImage = imageApi.getImageFrame(getImageFrameRequest);
// Zapisz wyodrębnioną ramkę TIFF w pamięci lokalnej
FileOutputStream fos = new FileOutputStream("/Users/s4/Documents/" + "Extracted-TIFF.tiff");
fos.write(updatedImage);
fos.close();
Przykładowe obrazy TIFF użyte w powyższym przykładzie można pobrać z DeskewSampleImage.tif.
Przetwarzanie obrazu TIFF za pomocą poleceń cURL
Innym wygodnym sposobem uzyskiwania dostępu do interfejsów API REST są polecenia cURL. Ponieważ Aspose.Imaging Cloud jest oparty na architekturze REST, możemy również wyodrębnić ramki obrazów tiff za pomocą poleceń cURL. Teraz warunkiem wstępnym tego działania jest wygenerowanie tokena 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"
Po wygenerowaniu tokena JWT musimy wykonać następujące polecenie, aby wyodrębnić ramkę obrazów 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
Wniosek
W tym momencie poznaliśmy wszystkie niezbędne szczegóły dotyczące wyodrębniania obrazów z plików tiff. Zbadaliśmy opcję wyodrębniania ramki TIFF za pomocą fragmentu kodu Java Java lub poleceń cURL. Innym podejściem do testowania obiecujących funkcji API jest użycie SwaggerUI, a jeśli chcesz zmodyfikować kod źródłowy SDK, możesz pobrać go z GitHub (wszystkie nasze Cloud SDK są rozwijane pod kierunkiem MIT licencja).
Niemniej jednak Dokumentacja produktu jest niesamowitym źródłem informacji o innych ekscytujących funkcjach oferowanych przez interfejs API. Na koniec, w przypadku napotkania jakichkolwiek problemów podczas korzystania z interfejsu API, możesz rozważyć skontaktowanie się z nami w celu 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: