Я хочу изменить размер изображения на своем веб-сайте, но когда я использую Bitmap для загрузки изображения 14032 * 19864 (расширение png), вызывается OutOfMemoryException
. Моя конфигурация компилятора - any cpu
. Я сомневался, работает ли рабочая среда x64
. код ниже:OutOfMemoryException с использованием растрового изображения для изменения размера большого изображения
public ActionResult BimDWGViewer()
{
Viewer.Uri uri = null;
string url = Request.Params["u"];
uri = new Viewer.Uri("[email protected]"+url);
int width = Int32.Parse(Request.Params["w"]);
int height = Int32.Parse(Request.Params["h"]);
Nebula.Nexus.Helpers.ModelUriTranslator.TranslateUri(uri);
if (uri.IsFileProtocol)
{
string path = uri.Path;
System.Drawing.Bitmap image_source = new System.Drawing.Bitmap(path);
System.Drawing.Bitmap image_result = new System.Drawing.Bitmap(width,height);
using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image_result))
{
g.DrawImage(image_source, new System.Drawing.Rectangle(0, 0, width, height), new System.Drawing.Rectangle(0, 0, image_source.Width, image_source.Height), System.Drawing.GraphicsUnit.Pixel);
}
MemoryStream output = new MemoryStream();
image_result.Save(output, System.Drawing.Imaging.ImageFormat.Png);
byte[] res = output.ToArray();
output.Dispose();
image_source.Dispose();
image_result.Dispose();
return new FileContentResult(res, "image/png");
}
}
Исключение происходит в линии
System.Drawing.Bitmap image_source = new System.Drawing.Bitmap(path);
Вы пытались открыть диспетчер задач и посмотреть, сколько памяти использует ваша программа? –
Возможно, графика не была создана для обработки таких изображений. Использовать 'ImageMagick' http://www.imagemagick.org/script/index.php – Toumash
Действительно ли путь? Недействительные пути вызовут эту ошибку в моем опыте – Jack