如何调整png格式c#的大小

本文关键字:格式 png 何调整 调整 | 更新日期: 2023-09-27 18:27:32

我需要做的是调整ImageFormat为PNG的图像大小。

现在我这样做:

 public static byte[] ResizeImage(Image image, int width, int height)
    {
        byte[] result = new byte[65000];
        var destRect = new Rectangle(0, 0, width, height);
        var destImage = new Bitmap(width, height);
        destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);
        using (var graphics = Graphics.FromImage(destImage))
        {
            graphics.CompositingMode = CompositingMode.SourceCopy;
            graphics.CompositingQuality = CompositingQuality.HighQuality;
            graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
            graphics.SmoothingMode = SmoothingMode.HighQuality;
            graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
            using (var wrapMode = new ImageAttributes())
            {
                wrapMode.SetWrapMode(WrapMode.TileFlipXY);
                graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode);
            }
        }
        using (MemoryStream stream = new MemoryStream())
        {
            destImage.Save(stream, ImageFormat.Png);
            result = stream.ToArray();
            return result;
        }
    }

事情是在"最后阶段",我需要这个字节数组中的图像。这种调整大小的方法效果不佳,因为它会使图像"更重"。

通常我使用这种方法将图像转换为PNG:

   public byte[] imageToByteArray(Image imageIn) {
        MemoryStream ms = new MemoryStream();
        imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
        return ms.ToArray();
    }

但最终的"权重"(在imageTobyteArray之后)并不能满足我的要求,所以我想调整它的大小,使其"更轻"(resize方法)。

但最终结果是,我的Resize方法使它重了两倍,有什么想法吗?

@例如,在我截屏我的桌面(1366x768)并使用imageTobyteArray之后,它需要60000字节,然后我调整它的大小(例如1200x768),它在byteArray中需要150000字节。调整大小后不应该少于60000吗?如果我的想法是错误的,请纠正

如何调整png格式c#的大小

您似乎混淆了图像复杂性和图像大小。

请查看原始1366x768图像中的实际像素。注意到图像看起来有多干净吗?东西的边缘是如何好看和锋利的,颜色计数是如何低的,等等?这是因为图像(相对)简单。

现在,使用任何你喜欢的方法调整图像的大小,并再次查看像素。在调整大小的过程中,边缘变得模糊。颜色计数很高,等等。总之,图像的复杂性增加了。

图像中的平滑渐变压缩真的很糟糕,大的颜色计数等等也是如此。这就是为什么你的小但更复杂的图像用PNG压缩得很糟糕的原因。如果您想要复杂图像的小文件大小,请使用JPEG并承受压缩伪影。