Monotouch - 校正颠倒的图像旋转

时间:2013-03-12 09:53:11

标签: xamarin.ios uiimage cgcontext image-rotation cgimage

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

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

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

你会注意到只是使用这段代码会垂直翻转图像,我无法解释为什么mono会这样做并看看我不期待修复它的一些解决方案。

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

1 个答案:

答案 0 :(得分: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;
}

我在使用this question中的代码时偶然发现了这个解决方案,并认为,嘿,这有效,我不需要它做任何其他事情:D所以我希望这对你有帮助!

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