การแปลงรูปภาพ
การแปลงรูปภาพเป็นขาวดำและระดับสีเทา
บางครั้งคุณอาจต้องการที่จะแปลงรูปภาพสีเป็นขาวดำหรือระดับสีเทาสำหรับการพิมพ์หรือเก็บถาวรไว้ บทความนี้จะสาธิตการใช้ Aspose.PSD สำหรับ .NET API เพื่อบรรลุการนี้โดยใช้วิธีการสองตัวดังนี้
- การทำภาพกลม
- การทำสีเทา
การทำภาพกลม
เพื่อเข้าใจแนวคิดของการทำภาพกลม สำคัญที่จะประกาศรูปภาพจากฐานสองที่เป็นรูปภาพดิจิตอลที่มีเพียงค่าสองค่าสำหรับแต่ละพิกเซล โดยปกติสีสองสีที่ใช้สำหรับรูปภาพกลมคือสีดำและสีขาวถึงท่านสองสีอื่น ๆ สามารถนำมาใช้ได้ การทำภาพกลมคือกระบวนการที่ทำให้รูปเป็นขั้นที่สองหมายความว่าแต่ละพิกเซลถูกเก็บในรูปแบบเดี่ยวเดียว (0 หรือ 1) ที่ 0 หมายถึงการขาดสีและ 1 หมายถึงสีมีอยู่ ในปัจจุบัน Aspose.PSD สำหรับ .NET API รองรับวิธีการทำภาพกลมสองวิธี
การทำภาพกลมด้วยฟิกซ์ทรีเชิล
โค้ดตัวอย่างต่อไปนี้จะแสดงถึงวิธีการใช้ฟิกซ์ทรีชิลให้นำไปใช้กับรูปภาพ
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + @"BinarizationWithFixedThreshold_out.jpg"; | |
// Load an image | |
using (Image image = Image.Load(sourceFile)) | |
{ | |
// Cast the image to RasterCachedImage and Check if image is cached | |
RasterCachedImage rasterCachedImage = (RasterCachedImage)image; | |
if (!rasterCachedImage.IsCached) | |
{ | |
// Cache image if not already cached | |
rasterCachedImage.CacheData(); | |
} | |
// Binarize image with predefined fixed threshold and Save the resultant image | |
rasterCachedImage.BinarizeFixed(100); | |
rasterCachedImage.Save(destName, new JpegOptions()); | |
} |
การทำภาพกลมด้วยฟิกซ์ออตซุ
โค้ดตัวอย่างต่อไปนี้แสดงถึงวิธีการใช้การทำภาพกลมด้วยฟิกซ์ออตซุให้นำไปใช้กับรูปภาพ
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + @"BinarizationWithOtsuThreshold_out.jpg"; | |
// Load an image | |
using (Image image = Image.Load(sourceFile)) | |
{ | |
// Cast the image to RasterCachedImage and Check if image is cached | |
RasterCachedImage rasterCachedImage = (RasterCachedImage)image; | |
if (!rasterCachedImage.IsCached) | |
{ | |
// Cache image if not already cached | |
rasterCachedImage.CacheData(); | |
} | |
// Binarize image with Otsu Thresholding and Save the resultant image | |
rasterCachedImage.BinarizeOtsu(); | |
rasterCachedImage.Save(destName, new JpegOptions()); | |
} |
การทำสีเทา
การทำสีเทาคือกระบวนการที่ทำให้รูปภาพที่มีโทนสีต่อเนื่องเป็นรูปภาพที่มีโทนสีเทาไม่ต่อเนื่อง โค้ดตัวอย่างต่อไปนี้จะแสดงถึงวิธีการใช้การทำสีเทา
แปลงเลเยอร์รูปภาพ GIF เป็นรูปภาพ TIFF
บางครั้งจะต้องการสกัดและแปลงเลเยอร์ของรูปภาพ PSD เป็นรูปแบบภาพราสเตอร์อื่นเพื่อตอบโตกับความต้องการของแอปพลิเคชัน Aspose.PSD API สนับสนุนคุณสมบัติในการสกัดและแปลงเลเยอร์ของรูปภาพ PSD เป็นรูปแบบภาพราสเตอร์อื่นก่อนที่จะสร้างอินสแตนซ์ของรูปภาพและโหลดรูปภาพ PSD จากดิกส์ภาพภายใน จากนั้นเราจะวนรอบแต่ละเลเยอร์ในคุณสมบัติเลเยอร์ จากนั้นเราจะแปลงบล็อกเป็นรูปภาพ TIFF โค้ดตัวอย่างต่อไปนี้แสดงถึงวิธีการแปลงเลเยอร์รูปภาพ PSD เป็นรูปภาพ TIFF
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + @"output"; | |
// Load a PSD image and Convert the image's layers to Tiff images. | |
using (PsdImage image = (PsdImage)Image.Load(sourceFile)) | |
{ | |
// Iterate through array of PSD layers | |
for (int i = 0; i < image.Layers.Length; i++) | |
{ | |
// Get PSD layer. | |
Layer layer = image.Layers[i]; | |
// Create an instance of TIFF Option class and Save the PSD layer as TIFF image | |
TiffOptions objTiff = new TiffOptions(TiffExpectedFormat.TiffDeflateRgb); | |
layer.Save("output" + i + "_out.tif", objTiff); | |
} | |
} |
การแปลง CMYK PSD เป็น CMYK TIFF
ใช้ Aspose.PSD สำหรับ .NET, นักพัฒนาสามารถแปลงไฟล์ CMYK PSD เป็นรูปแบบ tiff CMYK บทความนี้จะแสดงวิธีการส่งออก/แปลงไฟล์ CMYK PSD เป็นรูปแบบ tiff CMYK ด้วย Aspose.PSD สำหรับ .NET คุณสามารถโหลดรูปภาพ PSD และจากนั้นคุณสามารถกำหนดคุณสมบัติต่าง ๆ โดยใช้ TiffOptions คลาส และบันทึกหรือส่งออกภาพ โค้ดตัวอย่างต่อไปนี้แสดงวิธีการบรรลุคุณสามารถทำเช่นนี้
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + @"output.tiff"; | |
using (Image image = Image.Load(sourceFile)) | |
{ | |
image.Save(destName, new TiffOptions(TiffExpectedFormat.TiffLzwCmyk)); | |
} |
ส่งออกรูปภาพ
นอกจากชุดคำสั่งประมวลรูปภาพที่หลากหลาย Aspose.PSD ยังมีคลาสที่พิเศษที่ให้การแปลงรูปภาพ PSD ไปยังรูปแบบอื่น ๆ การใช้ไลบรารี่นี้ การแปลงรูปภาพ PSD ง่ายและ intuitive ด้านล่างคือคลาสพิเศษสำหรับวัตถุนี้ใน ImageOptions namespace.
การส่งออกรูปภาพ PSD ด้วย Aspose.PSD สำหรับ .NET API ง่ายมาก ทุกสิ่งที่คุณต้องการก็คืออ็อบเจกต์ของคลาสที่เหมาะสมจาก ImageOptions namespace โดยใช้อ็อบเจกต์เหล่านี้ คุณสามารถส่งออกรูปภาพใด ๆ ที่สร้าง แก้ไข หรือเพียงแค่โหลดด้วย Aspose.PSD สำหรับ .NET ไปยังรูปแบบที่สนับสนุน
รวมรูปภาพ
ตัวอย่างนี้ใช้คลาส Graphics และแสดงวิธีการรวมรูปภาพสองหรือมากกว่าในรูปภาพเดียวกัน โดยให้มองเห็นการดำเนินการตัวอย่างเช่นตัวอย่างสร้างภาพ PsdImage ใหม่และวาดรูปภาพบนพื้นผิวแคนวาดโดยใช้เมธอดวาดรูปภาพที่เปิดเผยโดยคลาส Graphics ด้วยการใช้ Graphics class รูปภาพสองอันหรือมากกว่าสามารถรวมกันในรูปภาพเดียวกันได้อย่างไรว่ารูปภาพที่ได้มาจะดูเหมือนเป็นรูปภาพเดียวกันกับไม่มีช่องว่างระหว่างส่วนของรูปภาพและไม่มีหน้า ขนาดแคนวาจะตรงกับขนาดของรูปภาพผลลัพธ์ ต่อไปคือการสาธิตการแสดงวิธีใช้ วาดรูปภาพ ของคลาส Graphics เพื่อแสดงวิธีใช้รูปภาพหลายรูปภาพในรูปภาพเดียว
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Create an instance of PsdOptions and set its various properties | |
PsdOptions imageOptions = new PsdOptions(); | |
// Create an instance of FileCreateSource and assign it to Source property | |
imageOptions.Source = new FileCreateSource(dataDir + "Two_images_result_out.psd", false); | |
// Create an instance of Image and define canvas size | |
using (var image = Image.Create(imageOptions, 600, 600)) | |
{ | |
// Create and initialize an instance of Graphics, Clear the image surface with white color and Draw Image | |
var graphics = new Graphics(image); | |
graphics.Clear(Color.White); | |
graphics.DrawImage(Image.Load(dataDir + "example1.psd"), 0, 0, 300, 600); | |
graphics.DrawImage(Image.Load(dataDir + "example2.psd"), 300, 0, 300, 600); | |
image.Save(); | |
} |
ขยายและครอบรูปภาพ
Aspose.PSD API ช่วยให้คุณสามารถขยายหรือครอบรูปภาพขณะกระบวนการแปลงรูปภาพ นักพัฒนาจำเป็นต้องสร้างสี่เหลี่ยมพื้นที่ด้วยตำแหน่งและความสูงขนาดสี่เหลี่ยม ตัวอย่าง X, Y และความกว้าง, ความสูงของสี่เหลี่ยมจะแสดงถึงการขยายหรือครอบภาพที่โหลดมาได้ หากต้องการขยายหรือครอบรูปภาพขณะกระบวนการแปลงรูปภาพ กระทำตามขั้นตอนต่อไปนี้:
- สร้างอินสแตนซ์ของคลาส RasterImage และโหลดรูปภาพที่มีอยู่
- สร้างอินสแตนซ์ของ ImageOption
- สร้างอินสแตนซ์ของคลาส Rectangle และเริ่มต้นค่า X, Y และ Width, Height ของสี่เหลี่ยม
- เรียกเมธอด Save ของคลาส RasterImage พร้อมกับการส่งออกชื่อไฟล์, คำสั่งทางรูปภาพและอ็อบเจกต์สี่เหลี่ยมเป็นพารามิเตอร์
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"example1.psd"; | |
string destName = dataDir + @"jpeg_out.jpg"; | |
// Load an image in an instance of Image and Setting for image data to be cashed | |
using (RasterImage rasterImage = (RasterImage)Image.Load(sourceFile)) | |
{ | |
rasterImage.CacheData(); | |
// Create an instance of Rectangle class and define X,Y and Width, height of the rectangle, and Save output image | |
Rectangle destRect = new Rectangle { X = -200, Y = -200, Width = 300, Height = 300 }; | |
rasterImage.Save(destName, new JpegOptions(), destRect); | |
} |
อ่านและเขียนข้อมูล XMP กับรูปภาพ
XMP (Extensible Metadata Platform) เป็นมาตราฐานของ ISO XMP มาตรจวรทางข้อมูล รูปแบบการเชิงลึก, รูปแบบการเซรีไลซ์กระทำและคุณสมบัติหลักสำหรับกำหนดและประมวลข้อมูลแบบเซรีไลซ์ มันยังมีข้อบังคับสำหรับการฝังข