วิธีการแยกภาพ tiff

วิธีแยกรูปภาพจากไฟล์ TIFF

TIFF ของ TIF เป็นตัวย่อของ Tag Image File Format และเป็นหนึ่งในภาพกราฟิกแรสเตอร์ยอดนิยม ซึ่งใช้กันอย่างแพร่หลายโดยศิลปินกราฟิก อุตสาหกรรมการพิมพ์ และช่างภาพ TIFF แตกต่างจาก JPEG, GIF และ PNG เนื่องจากเป็นรูปแบบ “ไม่บีบอัด” และสามารถเก็บข้อมูลภาพได้มากกว่ารูปแบบ JPEG ตอนนี้หนึ่งในคุณสมบัติเด่นของไฟล์ TIFF คือความสามารถในการเก็บภาพหลายภาพ (แต่ละภาพมีหลายช่อง) เป็นเฟรมต่อเนื่องในไทม์สแต็กหรือซีสแต็กของรูปภาพ ดังนั้นในบทความนี้ เราจะมาดูรายละเอียดเกี่ยวกับวิธีแยกเฟรมออกจากอิมเมจ TIFF แบบหลายเฟรมโดยใช้ Java Cloud SDK

API การประมวลผลภาพ TIFF

เราได้สร้าง API การประมวลผลภาพที่นำเสนอความสามารถในการแก้ไข จัดการ และแปลงแรสเตอร์ เมตาไฟล์ photoshop และ [รูปแบบที่รองรับ] อื่นๆ 6 เป็นรูปแบบไฟล์ที่หลากหลาย ตอนนี้พูดถึงการจัดการรูปภาพ TIFF แล้ว API มีความสามารถอย่างมากในการประมวลผลรูปภาพ TIFF ตามขอบเขตของบทความนี้ เราจะใช้ Aspose.Imaging Cloud SDK for Java ซึ่งเป็นตัวห่อหุ้มรอบ REST API ดังนั้น ขั้นตอนแรกในการใช้ความสามารถของมันคือการเพิ่มการอ้างอิงในโครงการ 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

วิธีแยกรูปภาพ TIFF ใน Java

เรามาสำรวจรายละเอียดเกี่ยวกับวิธีแยกรูปภาพจากไฟล์ tiff โดยใช้โค้ด Java โปรดทราบว่า API ยังให้คุณปรับขนาด ครอบตัด และหมุนพลิกเฟรมที่แยกออกมา ยิ่งไปกว่านั้น หนึ่งในพารามิเตอร์บูลีน saveOtherFrames ให้คุณระบุว่าผลลัพธ์จะรวมเฟรมอื่นๆ ทั้งหมดหรือเฉพาะเฟรมที่ระบุ

  • ประการแรก สร้างวัตถุของ ImagingApi ตามข้อมูลรับรองลูกค้าส่วนบุคคล
  • ประการที่สอง อ่านเนื้อหาของอิมเมจ TIFF แรกโดยใช้เมธอด readAllBytes(…) และส่งผ่านไปยังอาร์เรย์ byte[]
  • ประการที่สาม สร้างอินสแตนซ์ของคลาส UploadFileRequest ที่เราระบุชื่อ TIFF บนที่เก็บข้อมูลบนคลาวด์
  • ตอนนี้อัปโหลดภาพ TIFF ภาพแรกไปยังที่เก็บข้อมูลบนคลาวด์โดยใช้เมธอด uploadFile(…)
  • ขั้นตอนต่อไปคือการระบุดัชนีเฟรม TIFF, ความสูง & ความกว้างของเฟรมที่แยกออกมา, ที่มาของการแยก และระบุว่าคุณต้องการเฟรมที่แยกในทูตสวรรค์โดยเฉพาะหรือไม่
  • ตอนนี้สร้างวัตถุของ GetImageFrameRequest ที่เราระบุอินพุตรูปภาพ TIFF และคุณสมบัติที่กำหนดไว้ข้างต้น
  • เรียกใช้เมธอด getImageFrame(…) ของ ImagingAPI เพื่อรับเฟรม TIFF
  • บันทึกเฟรมที่แยกออกมาไปยังไดรฟ์ในเครื่องโดยใช้วัตถุ FileOutputStream
// รับ ClientID และ ClientSecret จาก https://dashboard.aspose.cloud/
String clientId = "7ef10407-c1b7-43bd-9603-5ea9c6db83cd";
String clientSecret = "ba7cc4dc0c0478d7b508dd8ffa029845";

// สร้างวัตถุภาพ
ImagingApi imageApi = new ImagingApi(clientSecret, clientId);

// โหลดอิมเมจ TIFF แรกจากระบบโลคัล
File file1 = new File("DeskewSampleImage.tif");
byte[] imageStream = Files.readAllBytes(file1.toPath());
			
// สร้างวัตถุคำขออัปโหลดไฟล์
UploadFileRequest uploadRequest = new UploadFileRequest("input.tiff",imageStream,null);
// อัปโหลดภาพ TIFF ภาพแรกไปยังที่เก็บข้อมูลบนคลาวด์
imageApi.uploadFile(uploadRequest);

Integer frameId = 0; // Frame number inside TIFF
// ความกว้างและความสูงใหม่ของเฟรมที่แยกออกมา
Integer newWidth = 1000;
Integer newHeight = 1400;

// ต้นทางเพื่อเริ่มการแยกเฟรม
Integer x = 10;
Integer y = 10;

// พื้นที่สี่เหลี่ยมเพื่อแยกเฟรม
Integer rectWidth = 900;
Integer rectHeight = 800;

// ระบุมุมการหมุนสำหรับเฟรม TIFF ที่แยกออกมา
String rotateFlipMethod = "Rotate90FlipY";
// ผลลัพธ์จะรวมเฉพาะเฟรมที่ระบุเท่านั้น ไม่ใช่เฟรมอื่น
Boolean saveOtherFrames = false;

// สร้างวัตถุคำขอเพื่อแยกเฟรม tiff ตามรายละเอียดที่ระบุ
GetImageFrameRequest getImageFrameRequest = new GetImageFrameRequest("input.tiff", frameId, newWidth, newHeight,
                    x, y, rectWidth, rectHeight, null, saveOtherFrames, null, null);

// เฟรมที่แตกออกมาจะถูกส่งกลับในกระแสตอบรับ
byte[] updatedImage = imageApi.getImageFrame(getImageFrameRequest);

// บันทึกเฟรม TIFF ที่แยกออกมาในที่จัดเก็บในเครื่อง
FileOutputStream fos = new FileOutputStream("/Users/s4/Documents/" + "Extracted-TIFF.tiff");
fos.write(updatedImage);
fos.close();
แยกเฟรม tiff

รับการแสดงตัวอย่างเฟรม TIFF

สามารถดาวน์โหลดภาพ TIFF ตัวอย่างที่ใช้ในตัวอย่างด้านบนได้จาก DeskewSampleImage.tif

การประมวลผลภาพ TIFF โดยใช้คำสั่ง cURL

อีกวิธีที่สะดวกในการเข้าถึง REST APIs คือผ่านคำสั่ง cURL เนื่องจาก Aspose.Imaging Cloud ใช้สถาปัตยกรรม REST เราจึงสามารถแยกเฟรมรูปภาพ tiff โดยใช้คำสั่ง cURL ตอนนี้ข้อกำหนดเบื้องต้นของกิจกรรมนี้คือการสร้างโทเค็นการเข้าถึง 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 เราต้องใช้คำสั่งต่อไปนี้เพื่อแยกเฟรมภาพ 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

บทสรุป

ณ จุดนี้ เราได้เรียนรู้รายละเอียดที่จำเป็นทั้งหมดเกี่ยวกับวิธีแยกรูปภาพจากไฟล์ tiff เราได้สำรวจตัวเลือกในการแยกเฟรม TIFF โดยใช้ Java Java code snippet หรือผ่านคำสั่ง cURL อีกวิธีหนึ่งในการทดสอบคุณลักษณะที่น่าสนใจของ API คือผ่าน SwaggerUI และในกรณีที่คุณต้องการแก้ไขซอร์สโค้ดของ SDK คุณสามารถดาวน์โหลดได้จาก GitHub (Cloud SDK ของเราทั้งหมดได้รับการพัฒนาภายใต้ MIT ใบอนุญาต).

อย่างไรก็ตาม เอกสารประกอบผลิตภัณฑ์ เป็นแหล่งข้อมูลที่น่าทึ่งในการเรียนรู้เกี่ยวกับคุณสมบัติที่น่าตื่นเต้นอื่นๆ ที่นำเสนอโดย API สุดท้ายนี้ ในกรณีที่คุณพบปัญหาใดๆ ขณะใช้ API คุณอาจลองติดต่อเราเพื่อขอวิธีแก้ไขอย่างรวดเร็วโดยไม่เสียค่าใช้จ่าย ฟอรัมสนับสนุนผลิตภัณฑ์.

บทความที่เกี่ยวข้อง

โปรดไปที่ลิงก์ต่อไปนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ: