جلوگیری از کاهش عملکرد هنگام رسم بر روی تصاویر فشرده شده

جلوگیری از کاهش عملکرد هنگام رسم بر روی تصاویر فشرده شده

بعضی وقت‌ها نیاز است که عملیات گرافیکی بسیار گسترده‌ای را بر روی تصویر فشرده انجام دهید. هنگامی که Aspose.PSD مجبور به فشرده‌سازی و از حالت فشرده خارج کردن تصاویر در حال اجرا باشد، کاهش عملکرد ممکن است رخ دهد. رسم بر روی تصاویر فشرده همچنین ممکن است بازه‌ای عملکردی را به همراه داشته باشد.

راه‌حل

برای جلوگیری از کاهش عملکرد، توصیه می‌کنیم تصویر را به یک فرمت فشرده‌نشده ‌یا raw، تبدیل کنید قبل از انجام عملیات گرافیکی.

استفاده از مسیر فایل

در مثال زیر، یک تصویر PSD به فرمت raw (بدون فشرده‌سازی) تبدیل شده و در دیسک ذخیره می‌شود. سپس تصویر فشرده‌نشده باز می‌شود قبل از انجام عملیات گرافیکی بر روی آن. این تکنیک به همان اندازه برای فایل‌های BMP و GIF نیز صدق می‌کند.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Load a PSD file as an image and cast it into PsdImage
using (PsdImage psdImage = (PsdImage)Image.Load(dataDir + "layers.psd"))
{
PsdOptions saveOptions = new PsdOptions();
saveOptions.CompressionMethod = CompressionMethod.Raw;
psdImage.Save(dataDir + "uncompressed_out.psd", saveOptions);
}
// Now reopen the newly created image.
using (PsdImage psdImage = (PsdImage)Image.Load(dataDir + "uncompressed_out.psd"))
{
Graphics graphics = new Graphics(psdImage);
// Perform graphics operations.
}

استفاده از یک شیء جریان

کد مثال زیر نشان می‌دهد که چگونه تصویر PSD به فرمت raw (بدون فشرده‌سازی) تبدیل شده و با استفاده از MemoryStream در دیسک ذخیره شده است.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
{
// Load a PSD file as an image and cast it into PsdImage
using (PsdImage psdImage = (PsdImage)Image.Load(dataDir + "layers.psd"))
{
PsdOptions saveOptions = new PsdOptions();
saveOptions.CompressionMethod = CompressionMethod.Raw;
psdImage.Save(stream, saveOptions);
}
// Now reopen the newly created image. But first seek to the beginning of stream since after saving seek is at the end now.
stream.Seek(0, System.IO.SeekOrigin.Begin);
using (PsdImage psdImage = (PsdImage)Image.Load(stream))
{
Graphics graphics = new Graphics(psdImage);
// Perform graphics operations.
}
}