如何确保我们获得无损图像

本文关键字:图像 我们 何确保 确保 | 更新日期: 2023-09-27 18:35:44

我正在尝试编写一个代码来获取图像(PNG,JPG,BMP')裁剪和旋转图像。我想在不丢失信息的情况下裁剪图像(插值没有变化)所以我正在使用

        Bitmap target = new Bitmap(cropRect.Width, cropRect.Height);
        using (Graphics g = Graphics.FromImage(target))
        {
            g.DrawImage(img, new Rectangle(0, 0, target.Width, target.Height),
                             cropRect,
                             GraphicsUnit.Pixel);
        }

其中目标是裁剪后的图像。 img 是原始图像,cropRect 是我要裁剪的裁剪矩形。因为我保持图像大小(无缩放),所以不应该丢失任何信息。

之后,我使用

        target.RotateFlip(RotateFlipType.Rotate90FlipNone);

因为它是 90 度旋转 - 它应该保持无损。这是对的吗?我找不到有关该主题的任何文档,如果有人有链接,我将不胜感激!

如何确保我们获得无损图像

您可以使用

DrawImageUnscaled/DrawImageUnscaledAndClipped来绝对确保它不会做任何时髦的事情,尽管我怀疑它无论如何都不会在你的情况下。而且由于它是 90 度增量和/或翻转,RotateFlip不应该降低图像质量。

但是,如果将图像重新保存为非无损格式,则肯定会丢失一些信息。