在dotnet中生成jpg缩略图

leo*_*ora 1 c# image

我正在使用此代码拍摄jpg图像并将其保存为缩略图,但它似乎很慢..

        Image thumbNail = image.GetThumbnailImage(width, height, null, new IntPtr());
Run Code Online (Sandbox Code Playgroud)

有没有更快的方法从图像目录生成大量的缩略图?

Eli*_*ver 6

尝试绘制图像 - 重新编辑

    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


whi*_*and 6

1)到目前为止,创建.Jpg缩略图的最快和最可靠的方法是使用部分解压缩.

Jpg具有独特的外观,因为它可以提取原件的1/8尺寸或1/16尺寸(或2尺寸的任何功率)副本而无需对整个原始图像进行解压缩或采样.

有没有注意到像Picassa或Windows Explorer这样的程序似乎如此超快速地创建缩略图?这就是他们这样做的方式(当他们还没有被缓存时).

基于Independent JPEG Group库代码的任何库中都可以轻松使用此功能,其中大部分都是.例如,ImageMagick有一个.NET层可用.

2)您可以通过使用像libjpeg turbo这样的硬件加速库来进一步提高速度,尽管它可能需要互操作.

3)这个特殊的.jpg功能的一些解释在这里.