0

我正在尝试编写一个获取图像(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);
        }

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

之后我使用旋转图像

        target.RotateFlip(RotateFlipType.Rotate90FlipNone);

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

4

1 回答 1

0

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

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

于 2014-12-30T16:09:40.950 回答