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

时间:2014-12-30 15:36:14

标签: c# image rotation crop lossless

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

        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);
        }

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

之后我正在使用

旋转图像
        target.RotateFlip(RotateFlipType.Rotate90FlipNone);

因为旋转90度 - 它应该保持无损。 那是对的吗? 我无法找到关于该主题的任何文件,如果有人有链接我会很感激!

1 个答案:

答案 0 :(得分:0)

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

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