การแยกเฟรม TIFF

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

ตัวเลือกอื่นๆ ที่เราได้รับใน TIFF คือเลเยอร์และเพจ ซึ่งเลเยอร์สามารถนำไปเปรียบเทียบกับความโปร่งใสของเอฟเฟกต์ภาพหรือภาพต่างๆ ที่ถูกนำไปใช้และวางไว้เหนือหรือใต้ภาพ ดังที่แสดงในภาพด้านล่าง ภาพจะแสดงเลเยอร์หลายเลเยอร์ที่มีอยู่ ในบทความนี้ เราจะมาพูดถึงขั้นตอนในการแยกเฟรมจากภาพ TIFF หลายเฟรมโดยใช้ Aspose.Imaging Cloud SDK for .NET

ภาพ TIFF พร้อมกรอบ

การติดตั้ง SDK

Aspose.Imaging Cloud SDK for .NET คือ SDK สำหรับการเขียนโปรแกรมที่พัฒนาบน Aspose.Imaging Cloud API และมอบความสามารถในการจัดการรูปภาพทั้งหมดให้กับนักพัฒนา .NET ดังนั้นขั้นตอนแรกคือการติดตั้ง SDK ซึ่งสามารถดาวน์โหลดได้ที่ NuGet และ GitHub เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้ง SDK จากไลบรารี NuGet

Install-Package Aspose.Imaging-Cloud

หรืออีกวิธีหนึ่ง คุณสามารถเพิ่มแพ็คเกจโดยใช้ตัวจัดการแพ็คเกจ NuGet ใน Visual Studio ดังแสดงด้านล่าง คุณอาจลองไปที่ลิงก์ต่อไปนี้เพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับ วิธีติดตั้ง Aspose.Cloud SDK

Aspose.Imaging SDK คลาวด์

ขั้นตอนต่อไปในการใช้ SDK คือการรับข้อมูล ClientID และ ClientSecret ส่วนตัวของคุณ ดังนั้น ขั้นตอนแรกคือการสร้างบัญชีโดยไปที่ Aspose.Cloud Dashboard หากคุณมีบัญชี GitHub หรือ Google ให้ลงทะเบียน มิฉะนั้น ให้คลิกที่ปุ่ม Create a new Account และระบุข้อมูลที่จำเป็น จากนั้นเข้าสู่ระบบแดชบอร์ดโดยใช้ข้อมูลรับรอง และขยายส่วน Applications จากแดชบอร์ด จากนั้นเลื่อนลงไปที่ส่วน Client Credentials เพื่อดูข้อมูล Client ID และ Client Secret

การดูตัวอย่าง ClientID และ ClientSecret

แยกเฟรม TIFF โดยใช้คำสั่ง cURL

ขั้นแรก เราจะมาพูดถึงการแยกเฟรม TIFF โดยใช้คำสั่ง cURL เนื่องจากเป็นหนึ่งในวิธีที่สะดวกในการเข้าถึง REST API บนแพลตฟอร์มใดๆ ก็ได้ โดยไม่คำนึงถึงแพลตฟอร์มและความซับซ้อนของสถาปัตยกรรมพื้นฐาน ดังนั้น เพื่อใช้คำสั่ง cURL ขั้นตอนแรกคือการสร้าง JSON Web Token (JWT) ตามรายละเอียด ClientID และ ClientSecret ที่ดึงมาจากแดชบอร์ด Aspose.Cloud โปรดดำเนินการคำสั่งต่อไปนี้ในเทอร์มินัลเพื่อสร้างโทเค็น JWT

curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=718e4235-8866-4ebe-bff4-f5a14a4b6466&client_secret=388e864b819d8b067a8b1cb625a2ea8e" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"

ก่อนที่จะดำเนินการต่อ โปรดทราบว่าสามารถแยกเฟรมได้โดยใช้ API ต่อไปนี้อย่างใดอย่างหนึ่ง:

API แรกคาดหวังให้คุณอัปโหลดรูปภาพไปยัง Cloud Storage ก่อน จากนั้นส่งชื่อรูปภาพใน URL ของ API หลังจากอัปเดตพารามิเตอร์รูปภาพแล้ว API จะส่งคืนรูปภาพที่อัปเดตในการตอบสนอง

ในทางกลับกัน ด้วย API ตัวที่สอง คุณสามารถส่งภาพโดยตรงในเนื้อหาคำขอได้ นอกจากนี้ยังช่วยให้คุณบันทึกภาพที่อัปเดตบน Cloud Storage ได้โดยระบุค่าพารามิเตอร์ outPath อย่างไรก็ตาม หากคุณไม่ระบุค่า การตอบสนองจะมีภาพแบบสตรีม

ตอนนี้ใช้คำสั่งต่อไปนี้เพื่อแยกเฟรมที่ 4 จากภาพ TiffSampleImage.tiff ที่อัพโหลดไว้บนที่เก็บข้อมูลบนคลาวด์แล้ว

curl -v -X GET "https://api.aspose.cloud/v3.0/imaging/TiffSampleImage.tiff/frames/4?saveOtherFrames=true" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>" \
-o myresultant.tiff

วิธีการแยกเฟรม TIFF ใน C#

ในส่วนนี้ เราจะแยกเฟรม TIFF โดยใช้ C# .NET โปรดปฏิบัติตามขั้นตอนด้านล่าง

  • ขั้นตอนแรกคือการสร้างอ็อบเจ็กต์ของ ImagingApi โดยระบุ ClientID และ ClientSecret เป็นอาร์กิวเมนต์
  • สร้างวัตถุสตริงที่กำหนดภาพ TIFF อินพุต
  • เพื่อระบุเฟรมที่จะแยก ให้สร้างเลขจำนวนเต็ม
  • สร้างวัตถุจำนวนเต็มเพื่อระบุขนาดของเฟรมที่แยกออกมา
  • ขั้นตอนต่อไปคือการสร้างอ็อบเจ็กต์ GetImageFrameRequest ซึ่งรับชื่อ TIFF อินพุต, frameID และพารามิเตอร์อื่นๆ ที่เกี่ยวข้องกับมิติเฟรมที่แยกออกมาเป็นอาร์กิวเมนต์
  • ก่อนสุดท้าย เรียกใช้เมธอด GetImageFrame(..) ของ ImagingApi ซึ่งใช้วัตถุ GetImageFrameRequest เป็นอาร์กิวเมนต์อินพุต
  • สุดท้ายให้บันทึกเอาท์พุตเพื่อโหลดไดรฟ์
string clientID = "718e4235-8866-4ebe-bff4-f5a14a4b6466"; // Get ClientID from https://dashboard.aspose.cloud/
string clientSecret = "388e864b819d8b067a8b1cb625a2ea8e"; // Get CLientSecret from https://dashboard.aspose.cloud/

// สร้างอินสแตนซ์ของ ImagingApi
Aspose.Imaging.Cloud.Sdk.Api.ImagingApi imagingApi = new ImagingApi(clientSecret, clientID,"https://api.aspose.cloud/","v3.0",false);

// อินพุตภาพ TIFF พร้อมใช้งานบนระบบจัดเก็บข้อมูลบนคลาวด์
String fileName = "TiffSampleImage.tiff";

int? frameId = 5; // Index of a frame
int? newWidth = 300;
int? newHeight = 450;
int? x = 10;
int? y = 10;
int? rectWidth = 200;
int? rectHeight = 300;

string rotateFlipMethod = "RotateNoneFlipNone";

// ผลลัพธ์จะรวมเฉพาะเฟรมที่ระบุเท่านั้น
bool? saveOtherFrames = false;

string folder = null; // Input file is saved at the root of the storage
string storage = null; // We are using default Cloud Storage

GetImageFrameRequest getImageFrameRequest = new GetImageFrameRequest(fileName, frameId, newWidth, newHeight,
                                x, y, rectWidth, rectHeight, rotateFlipMethod, saveOtherFrames, folder, storage);

Stream imageFrame = imagingApi.GetImageFrame(getImageFrameRequest);

// บันทึกภาพอัพเดตลงในพื้นที่จัดเก็บข้อมูลภายใน
using (var fileStream = File.Create("/Users/nayyershahbaz/Downloads/MyResultant.tiff"))
{
    imageFrame.Seek(0, SeekOrigin.Begin);
    imageFrame.CopyTo(fileStream);
}

โปรดทราบว่าคุณสมบัติ rotateFlipMethod สามารถมีหนึ่งในค่าต่อไปนี้ได้

วิธี RotateFlip (Rotate180FlipNone, Rotate180FlipX, Rotate180FlipXY, Rotate180FlipY, Rotate270FlipNone, Rotate270FlipX, Rotate270FlipXY, Rotate270FlipY, Rotate90FlipNone, Rotate90FlipX, Rotate90FlipXY, Rotate90FlipY, RotateNoneFlipNone, RotateNoneFlipX, RotateNoneFlipXY, RotateNoneFlipY) ค่าเริ่มต้นคือ RotateNoneFlipNone

บทสรุป

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

เราขอแนะนำให้คุณดูลิงก์ต่อไปนี้เพื่อดูข้อมูลเพิ่มเติม