我想在文件位置的网格视图中显示缩略图图像.如何生成.jpeg文件?我正在使用C#语言asp.net.
我有一个图像上传器和裁剪器,它创建缩略图,我偶尔会在以下行中获得Out Of Memory异常:
Dim bm As Bitmap = System.Drawing.Image.FromFile(imageFile)
Run Code Online (Sandbox Code Playgroud)
错误的发生是微小的,非常罕见,但我总是想知道可能导致它的原因.imageFile变量只是一个Server.MapPath到图像的路径.
我很好奇,如果有人以前遇到过这个问题,他们是否有任何想法可能导致它?这可能是图像的大小吗?
我可以在必要时发布代码以及我所拥有的任何支持信息,但是我很乐意听到人们对此的看法.
我在C#中创建了一个图像服务,它采用了基础层图像(JPG),将一个更透明的PNG层(32位)分层,然后输出最终的JPG图像.我试图从这个函数中挤出最后一毫秒,我的代码是GDI +中DrawImage调用的瓶颈.托管代码在这里:
// Load base image and create graphics
Image image = LoadImage(renderSettings.RenderedImageDirectory + baseLayer);
Graphics graphics = Graphics.FromImage(image);
graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighSpeed;
// Draw additional layers to final image
for (int i = 1; i < renderLayers.Count; i++) {
// SLOW -- LoadImage just a utility method that returns an Image from disk or cache
graphics.DrawImage(LoadImage(renderSettings.RenderedImageDirectory + renderLayers[i]), 0, 0, image.Width, image.Height);
}
if (graphics != null) graphics.Dispose();
Run Code Online (Sandbox Code Playgroud)
现在,我读到了通过P/Invoke直接调用GDI获得的性能提升,并试图替换DrawImage调用.我创建了一个单元测试,试图复制加载JPG的相同功能,然后在其上层叠一个透明PNG.
参考:http …