Menghindari Penurunan Kinerja saat Menggambar di atas Gambar Terkompresi
Menghindari Penurunan Kinerja saat Menggambar di atas Gambar Terkompresi
Ada saat-saat ketika Anda ingin melakukan operasi grafis yang sangat ekstensif pada gambar terkompresi. Ketika Aspose.PSD harus mengompres dan mendekompresi gambar secara langsung, penurunan kinerja dapat terjadi. Menggambar di atas gambar terkompresi juga dapat membawa hukuman kinerja.
Solusi
Untuk menghindari penurunan kinerja, kami merekomendasikan Anda mengonversi gambar ke format yang tidak terkompresi, atau mentah, sebelum melakukan operasi grafis.
Menggunakan Path Berkas
Pada contoh berikut, gambar PSD dikonversi ke format mentah (tidak terkompresi) dan disimpan ke disk. Gambar tidak terkompresi kemudian dimuat kembali sebelum operasi grafis dilakukan padanya. Teknik yang sama berlaku untuk berkas BMP dan 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. | |
} |
Menggunakan Objek Aliran (Stream)
Potongan kode berikut menunjukkan bagaimana gambar PSD dikonversi ke format mentah (tidak terkompresi) dan disimpan ke disk menggunakan 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. | |
} | |
} |