使用8位图像缩放或调整8位图像的大小(PixelFormat.Format8bppIndexed)

时间:2016-04-07 09:21:24

标签: c# .net image resize 8-bit

我尝试通过c#/ .NET中的TCP客户端缩放grey8图像以进行视频传输。 来自IpCam的我的图像目前是1920x1080,我想将其大小调整为640x480,以减少连接上的流量:

我在stackoverflow上找到了一个工作示例唯一的问题是..

 public static Image ResizeImage(Bitmap image, Size size, bool preserveAspectRatio = true)
    {
        int newWidth;
        int newHeight;
        if (preserveAspectRatio)
        {
            int originalWidth = image.Width;
            int originalHeight = image.Height;
            float percentWidth = (float)size.Width / (float)originalWidth;
            float percentHeight = (float)size.Height / (float)originalHeight;
            float percent = percentHeight < percentWidth ? percentHeight : percentWidth;
            newWidth = (int)(originalWidth * percent);
            newHeight = (int)(originalHeight * percent);
        }
        else
        {
            newWidth = size.Width;
            newHeight = size.Height;
        }
        Image newImage = new Bitmap(newWidth, newHeight);
        using (Graphics graphicsHandle = Graphics.FromImage(newImage))
        {
            graphicsHandle.InterpolationMode = InterpolationMode.HighQualityBicubic; //NearestNeighbor
            graphicsHandle.DrawImage(image, 0, 0, newWidth, newHeight);
        }

        return(newImage);
    }

..我从这个函数得到的图像是一个32ARgb的图像,这不是我想要的。因为它引入了3个额外的颜色通道(Alpha和RBG)。 有没有办法在不改变颜色模式的情况下缩小图像?

我也试过使用InterpolationMode.NearestNeighbor但我只有一个32位的位图。

提前致谢和问候 罗伯特

0 个答案:

没有答案