Vermeiden Sie Leistungsverluste beim Zeichnen über komprimierten Bildern
Vermeiden Sie Leistungsverluste, wenn Sie über komprimierten Bildern zeichnen
Es gibt Momente, in denen Sie sehr umfangreiche Grafikoperationen auf einem komprimierten Bild durchführen möchten. Wenn Aspose.PSD Bilder auf die Schnelle komprimieren und dekomprimieren muss, kann es zu Leistungsverlusten kommen. Das Zeichnen über komprimierten Bildern kann ebenfalls mit einer Leistungseinbuße einhergehen.
Lösung
Um Leistungsverluste zu vermeiden, empfehlen wir, das Bild in ein unkomprimiertes oder Rohformat zu konvertieren, bevor Grafikoperationen durchgeführt werden.
Verwendung von Dateipfaden
Im folgenden Beispiel wird ein PSD-Bild in das Rohformat konvertiert (ohne Kompression) und auf der Festplatte gespeichert. Das unkomprimierte Bild wird dann geladen, bevor darauf Grafikoperationen durchgeführt werden. Die gleiche Technik gilt für BMP- und GIF-Dateien.
// 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. | |
} |
Verwendung eines Stream-Objekts
Der folgende Codeausschnitt zeigt Ihnen, wie ein PSD-Bild in das Rohformat konvertiert wird (ohne Kompression) und unter Verwendung von MemoryStream auf der Festplatte gespeichert wird.
// 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. | |
} | |
} |