我有一個用例,我需要渲染位圖拼貼作爲預覽。該應用程序是作爲一個基於MVC的REST服務,我有一個相當香草實現:c中的高性能位圖繪製解決方案#
using (var bitmap = new Bitmap((int)maxWidth, (int)maxHeight))
{
using (var graphic = Graphics.FromImage(bitmap))
{
graphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
// now again for each mod
foreach (var mod in mods)
{
var frame = frames.First(f => f.Index == mod.FrameIndex);
var fileInfo = GetFileInfo(mod);
using (var modImage = Image.FromFile(fileInfo.FullName))
{
graphic.DrawImage(modImage, (int)frame.Left, (int)frame.Top);
}
}
bitmap.Save(previewFileName);
}
}
雖然這個代碼工作正常,它執行很差(尤其是較大的圖像)。我也願意使用第三方庫,我只需要一個更快的執行解決方案。
任何幫助將主要讚賞。
更新
要澄清的使用情況,緩存並不能幫助。這些圖像由客戶上傳,然後他們請求預覽所選拼貼。這是圖像寫入緩慢的拼貼畫。
所以這是一個Web應用程序。您傳輸圖像的圖像格式是什麼?只是爲了確保只有繪圖是你的問題,而不是帶寬。一個System.Drawing.Bitmap可以是從RAW BMP到PNG,GIF,JPEG等任何東西。 –
我不期望支持RAW,但所有其他人都是公平的遊戲。客戶正在上傳圖片。 – user975060