Sıkıştırılmış Görüntüler Üzerine Çizim Yaparken Performans Bozulmasını Önleme

Sıkıştırılmış Görüntüler Üzerine Çizim Yaparken Performans Bozulmasını Önleme

Bir sıkıştırılmış görüntü üzerinde son derece yoğun grafik işlemleri gerçekleştirmek istediğiniz zamanlar olabilir. Aspose.PSD’nin görüntüleri sıkıştırıp açması gerekli olduğunda performans bozulması meydana gelebilir. Sıkıştırılmış görüntüler üzerine çizim yapmak da performans cezası getirebilir.

Çözüm

Performans bozulmasını önlemek için, grafik işlemleri yapmadan önce görüntüyü sıkıştırılmamış, veya ham, formata dönüştürmenizi öneririz.

Dosya Yolu Kullanarak

Aşağıdaki örnekte, bir PSD görüntüsü ham biçime (sıkıştırma olmadan) dönüştürülür ve diske kaydedilir. Grafik işlemleri yapmadan önce sıkıştırılmamış görüntü geri yüklenir. BMP ve GIF dosyaları için aynı teknik uygulanır.

// 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.
}

Akış Nesnesi Kullanarak

Aşağıdaki kod parçası, bir PSD görüntüsünün ham biçime (sıkıştırma olmadan) dönüştürülüp MemoryStream kullanılarak diske kaydedildiğini gösterir.

// 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.
}
}