0

我使用单声道已经有一段时间了,我遇到的一个问题是将图像加载到 CGImage 对象中最终会导致图像垂直翻转。这是我最初使用的代码:

public static CGImage LoadJPEG (string sImagePath, bool bSmoothImage)
{
    return CGImage.FromJPEG (
        new CGDataProvider (sImagePath), null, bSmoothImage,
        CGColorRenderingIntent.Default);
}

有一个 PNG 版本,您只需使用 CGImage.FromPNG 代替,但如果您使用错误的格式和错误的文件类型,那么您将获得异常。因为我一直都知道我的文件类型是什么,所以我没有放置任何捕获/检查来防止该异常。

您会注意到仅使用此代码会垂直翻转图像,我无法解释为什么单声道会这样做,并查看一些我不期待修复它的解决方案。

那么如何将其翻转回来呢?好吧,幸运的是我可以自己回答这个问题,但我不能保证这是“正确”的做法!

4

1 回答 1

0

请记住,这只是一个快速修复图像加载颠倒的方法。我认为代码在完成工作的同时尽可能简单。

public static CGImage RotateImage (CGImage oImage)
{
    CGContext oContext;
    UIImage oRotatedImage;
    RectangleF oImageBounds;
    //
    oImageBounds = new RectangleF (0, 0, oImage.Width, oImage.Height);
    //
    UIGraphics.BeginImageContext (oImageBounds.Size);
    oContext = UIGraphics.GetCurrentContext ();
    //
    oContext.DrawImage (oImageBounds, oImage);
    oRotatedImage = UIGraphics.GetImageFromCurrentImageContext ();
    UIGraphics.EndImageContext ();
    //
    return oRotatedImage.CGImage;
}

我在玩这个问题中的代码时偶然发现了这个解决方案,然后想,嘿,这行得通,我不需要它来做任何其他事情:D 所以我希望这对你有帮助!

另外,如果有人可以解释所有这一切的原因,那么我很想知道实际发生了什么。我之前使用 2D 图形的唯一经验是使用 XNA 框架。

于 2013-03-12T09:53:11.167 回答