BufferSizeHint
ImageOptionsBase.BufferSizeHint property
Ruft den Puffergrößenhinweis ab oder legt ihn fest, der als maximal zulässige Größe für alle internen Puffer definiert ist.
public int BufferSizeHint { get; set; }
Eigentumswert
Der Puffergrößenhinweis in Megabyte. Nicht positiver Wert bedeutet keine Speicherbegrenzung für interne Puffer
Beispiele
Das folgende Beispiel zeigt, wie Sie beim Erstellen eines neuen JPEG-Bildes ein Speicherlimit festlegen. Die Speichergrenze ist die maximal zulässige Größe (in Megabyte) für alle internen Puffer.
[C#]
string dir = "c:\\aspose.imaging\\issues\\net\\3404\\";
// Festlegen eines Speicherlimits von 50 Megabyte für das vom Ziel erstellte Image
Aspose.Imaging.ImageOptionsBase createOptions = new Aspose.Imaging.ImageOptions.JpegOptions
{
CompressionType = Aspose.Imaging.FileFormats.Jpeg.JpegCompressionMode.Progressive,
BufferSizeHint = 50,
Source = new Aspose.Imaging.Sources.FileCreateSource(dir + "createdFile.jpg", false),
};
using (var image = Aspose.Imaging.Image.Create(createOptions, 1000, 1000))
{
image.Save(); // am selben Ort speichern
}
Das folgende Beispiel zeigt, wie Sie ein Speicherlimit festlegen, wenn Sie ein PNG-Bild erstellen und komplexe Grafiken darauf zeichnen. Die Speichergrenze ist die maximal zulässige Größe (in Megabyte) für alle internen Puffer.
[C#]
string dir = "c:\\aspose.imaging\\issues\\net\\3383\\";
const int ImageSize = 2000;
Aspose.Imaging.ImageOptionsBase createOptions = new Aspose.Imaging.ImageOptions.PngOptions();
createOptions.Source = new Aspose.Imaging.Sources.FileCreateSource(dir + "graphics_simple.png", false);
createOptions.BufferSizeHint = 30; // Speicherlimit ist 30 MB
using (Aspose.Imaging.Image image = Aspose.Imaging.Image.Create(createOptions, ImageSize, ImageSize))
{
Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(image);
// Sie können hier beliebige Grafikoperationen verwenden, alle werden innerhalb der festgelegten Speichergrenze ausgeführt
// Zum Beispiel:
graphics.Clear(Aspose.Imaging.Color.LightSkyBlue);
graphics.DrawLine(new Aspose.Imaging.Pen(Aspose.Imaging.Color.Red, 3f), 0, 0, image.Width, image.Height);
image.Save();
}
// Eine große Anzahl grafischer Operationen wird ebenfalls unterstützt:
const int OperationAreaSize = 10;
createOptions = new Aspose.Imaging.ImageOptions.PngOptions();
createOptions.Source = new Aspose.Imaging.Sources.FileCreateSource(dir + "graphics_complex.png", false);
createOptions.BufferSizeHint = 30; // Speicherlimit ist 30 MB
using (Aspose.Imaging.Image image = Aspose.Imaging.Image.Create(createOptions, ImageSize, ImageSize))
{
Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(image);
graphics.BeginUpdate();
graphics.Clear(Aspose.Imaging.Color.LightSkyBlue);
int x, y;
int numberOfOperations = 0;
for (int column = 0; column * OperationAreaSize < ImageSize; column++)
{
for (int row = 0; row * OperationAreaSize < ImageSize; row++)
{
x = column * OperationAreaSize;
y = row * OperationAreaSize;
bool reversed = (column + row) % 2 != 0;
if (reversed)
{
graphics.DrawLine(
new Aspose.Imaging.Pen(Aspose.Imaging.Color.Red),
x + OperationAreaSize - 2,
y,
x,
y + OperationAreaSize);
}
else
{
graphics.DrawLine(
new Aspose.Imaging.Pen(Aspose.Imaging.Color.Red),
x,
y,
x + OperationAreaSize - 2,
y + OperationAreaSize);
}
numberOfOperations++;
}
}
// Etwa 40.000 Operationen werden hier angewendet, obwohl sie nicht zu viel Speicher beanspruchen
// da sie bereits in die externe Datei entladen sind und von dort einzeln geladen werden
graphics.EndUpdate();
image.Save();
}
Siehe auch
- class ImageOptionsBase
- namensraum Aspose.Imaging
- Montage Aspose.Imaging