RasterCachedImage.CacheData

RasterCachedImage.CacheData method

缓存数据并确保不会从底层 DataStreamContainer 再次加载额外数据。

public override void CacheData()

示例

以下示例展示了栅格图像缓存如何影响性能。一般情况下,读取缓存数据的速度快于读取未缓存的数据。

[C#]

string dir = "c:\\temp\\";

// 从 PNG 文件加载图像。
using (Aspose.Imaging.RasterCachedImage image = (Aspose.Imaging.RasterCachedImage)Aspose.Imaging.Image.Load(dir + "sample.png"))
{
    // 缓存所有像素数据,以便不再从底层数据流加载额外数据
    image.CacheData();

    System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
    stopwatch.Start();

    // 读取所有像素相当快。
    for (int y = 0; y < image.Height; y++)
    {
        for (int x = 0; x < image.Width; x++)
        {
            int color = image.GetArgb32Pixel(x, y);
        }
    }

    stopwatch.Stop();
    System.Console.WriteLine("Reading all cached pixels took {0} ms.", stopwatch.ElapsedMilliseconds);
}

// 从 PNG 文件加载图像
using (Aspose.Imaging.RasterCachedImage image = (Aspose.Imaging.RasterCachedImage)Aspose.Imaging.Image.Load(dir + "sample.png"))
{
    System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
    stopwatch.Start();

    // 读取所有像素的速度不如缓存时快
    for (int y = 0; y < image.Height; y++)
    {
        for (int x = 0; x < image.Width; x++)
        {
            int color = image.GetArgb32Pixel(x, y);
        }
    }

    stopwatch.Stop();
    System.Console.WriteLine("Reading all pixels without preliminary caching took {0} ms.", stopwatch.ElapsedMilliseconds);
}

// 输出可能如下所示:
// 读取所有已缓存像素耗时 1500 毫秒。
// 在未进行预缓存的情况下读取所有像素耗时 150000 毫秒。

另请参见