我正在使用此代码拍摄jpg图像并将其保存为缩略图,但它似乎很慢..
Image thumbNail = image.GetThumbnailImage(width, height, null, new IntPtr());
Run Code Online (Sandbox Code Playgroud)
有没有更快的方法从图像目录生成大量的缩略图?
尝试绘制图像 - 重新编辑
public Image ResizeImage(Image openImage, int NewWidth, int NewHeight) {
var openBitmap = new Bitmap(openImage);
var newBitmap = new Bitmap(NewWidth, NewHeight);
using (Graphics g = Graphics.FromImage(openBitmap))
{
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.DrawImage(newBitmap, new Rectangle(0, 0, NewWidth, NewHeight));
}
openBitmap.Dispose(); //Clear The Old Large Bitmap From Memory
return (Image)newBitmap;
}
Run Code Online (Sandbox Code Playgroud)
典型的3-4mb图像需要4-8ms
1)到目前为止,创建.Jpg缩略图的最快和最可靠的方法是使用部分解压缩.
Jpg具有独特的外观,因为它可以提取原件的1/8尺寸或1/16尺寸(或2尺寸的任何功率)副本而无需对整个原始图像进行解压缩或采样.
有没有注意到像Picassa或Windows Explorer这样的程序似乎如此超快速地创建缩略图?这就是他们这样做的方式(当他们还没有被缓存时).
基于Independent JPEG Group库代码的任何库中都可以轻松使用此功能,其中大部分都是.例如,ImageMagick有一个.NET层可用.
2)您可以通过使用像libjpeg turbo这样的硬件加速库来进一步提高速度,尽管它可能需要互操作.
3)这个特殊的.jpg功能的一些解释在这里.