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