تبدیل تصاویر
تبدیل تصاویر به سیاه و سفید و طیف خاکستری
گاهی اوقات ممکن است نیاز داشته باشید تصاویر رنگی را به سیاه و سفید یا طیف خاکستری برای مقاصد چاپ یا بایگانی تبدیل کنید. این مقاله استفاده از رابط برنامه نویسی Aspose.PSD برای .NET را برای رسیدن به این هدف با استفاده از دو روشی که در زیر آورده شده انجام میدهد.
- دودوییسازی
- طیفخاکستری
دودوییسازی
برای درک مفهوم دودوییسازی، اهمیت دارد تا تصویر دودویی را تعریف کنیم؛ یعنی تصویر دیجیتالی که میتواند فقط دو مقدار ممکن برای هر پیکسل داشته باشد. معمولاً، دو رنگی که برای یک تصویر دودویی استفاده میشوند، سیاه و سفید هستند اگرچه هر دو رنگ ممکن است استفاده شود. دودوییسازی فرآیند تبدیل یک تصویر به بیسطح است که به معنای این است که هر پیکسل به عنوان یک بیت تبدیل میشود (0 یا 1) جایی که 0 عدم وجود رنگ را نشان میدهد و 1 به معنای وجود رنگ است. API Aspose.PSD برای .NET در حال حاضر از دو روش دودوییسازی پشتیبانی میکند.
دودوییسازی با آستانه ثابت
کد مثال زیر نحوه استفاده از دودوییسازی با آستانه ثابت را به شما نشان میدهد.
// 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()); | |
} |
طیفخاکستری
تبدیل به طیفخاکستری فرآیند تبدیل تصویر دسترسی به یک تصویر با رنگهای خاکستری ناپیوسته است. کد مثال زیر نشان میدهد که نحوه استفاده از تبدیل به طیفخاکستری چگونه است.
// 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 + @"Grayscaling_out.jpg"; | |
// Load an image in an instance of 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(); | |
} | |
// Transform image to its grayscale representation and Save the resultant image | |
rasterCachedImage.Grayscale(); | |
rasterCachedImage.Save(destName, new JpegOptions()); | |
} |
تبدیل لایههای تصویر GIF به تصویر TIFF
گاهی اوقات لازم است لایههای یک تصویر PSD را به یک فرمت تصویر تخته رنگی دیگر تبدیل کرد تا نیاز برنامهای را برآورده سازد. API Aspose.PSD از قابلیت برداشتن و تبدیل لایههای یک تصویر 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); | |
} | |
} |
تبدیل PSD CMYK به TIFF CMYK
با استفاده از Aspose.PSD برای .NET، توسعهدهندگان میتوانند فایل CMYK PSD را به فرمت TIFF CMYK تبدیل کنند. این مقاله نشان میدهد که چگونه فایل CMYK PSD را به فرمت TIFF CMYK صادر/تبدیل کنیم با Aspose.PSD. با استفاده از 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 بسیار ساده و بصورت غیرضعیف است. کلاسهای ویژهای برای این هدف در فضاینام ImageOptions وجود دارد.
صادره کردن تصاویر با Aspose.PSD برای .NET API بسیار آسان است. تنها چیزی که نیاز دارید، یک شیء از کلاس مناسب از فضاینام ImageOptions باشید. با استفاده از این کلاسها، میتوانید به راحتی هر تصویری که با Aspose.PSD برای .NET ساخته، ویرایش یا فقط بارگذاری شده است، به هر فرمت پشتیبانیشده دیگری صادر کنید.
ترکیب تصاویر
این مثال از کلاس Graphics استفاده میکند و نشان میدهد چگونه دو یا چند تصویر را در یک تصویر کامل ترکیب کنیم. برای نشان دادن این عمل، این مثال یک PsdImage جدید ایجاد کرده و تصاویر را روی سطح کانونی با استفاده از متد افزوده شده Draw Image از کلاس Graphics رسم میکند. با استفاده از کلاس Graphics میتوان دو یا چند تصویر را به گونهای ترکیب کرد که تصویر حاصل به عنوان یک تصویر کامل بدون فضایی بین بخشهای تصویر و بدون صفحهها به نظر برسد. اندازه کانوس باید برابر با اندازه تصویر حاصل باشد. مثال کد زیر نحوه استفاده از متد DrawImage از کلاس 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(); | |
} |
گسترش و قطع تصاویر
API Aspose.PSD به شما امکان گسترش یا قطع تصویر در طول فرآیند تبدیل تصویر را میدهد. توسعهدهنده باید یک مستطیل با مختصات X و Y ایجاد کند و عرض و ارتفاع جعبه مستطیل را مشخص کند. مختصات X، Y و عرض، ارتفاع مستطیل، گسترش یا قطع تصویر بارگذاری شده را نشان میدهد. اگر در طول فرآیند تبدیل تصویر نیاز به گسترش یا قطع تصویر باشد، مراحل زیر را انجام دهید:
- یک نمونه از کلاس RasterImage ایجاد کنید و تصویر موجود را بارگذاری کنید.
- نمونه آبجکت کلاس ImageOption بسازید.
- یک نمونه از کلاس Rectangle بسازید و مختصات X,Y و عرض، ارتفاع مستطیل را مقدمه دهید
- متد 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 یک مدل داده، یک فرمت سریالیزاسیون و خواص اصلی برای تعریف و پردازش دیتای قابل انگشتنریزی را استاندارد میکند. همچنین رهنمودهایی برای جاسازی اطلاعات XMP به یک تصویر محبوب مانند JPEG ارائه میکند بدون اینکه خوانایی آنها توسط برنامههایی که از XMP پشتیبانی نمیکنند را تخریب کند. با استفاده از Aspose.PSD برای .NET API توسعهدهندگان میتوانند XMP metadata را از تصاویر بخوانند یا دیتای XMP را در تصاویر بنویسند. این مقاله نشان میدهد که چگونه میتوان از دادههای XMP خواند و آنها را در تصاویر نوشت.
ایجاد دادهی XMP، نوشتن آن و خواندن از فایل
با کمک فضاینام Xmp، توسعهدهندگان میتوانند یک شیء دادههای XMP ایجاد و آن را در یک تصویر نوشت. کد مثال زیر نشان میدهد چگونه از