在F#中存储为位图时旋转的图像

时间:2016-04-09 05:32:47

标签: image-processing io f#

我正在使用F#进行一些与图像处理相关的活动。

如果我使用

获取图像
let imagesForRecognition = 
    Directory.GetFiles("/RImages/","*.jpg")
    |> Array.map(fun x -> new Bitmap(x))

然后这样做。

    imagesForRecognition.[0].Save("A.jpg")

如果我的图片尺寸为1080x1920,则图像会旋转90度。我使用了一些528x960并且它们没有旋转。我发现这种行为很奇怪。

我正在使用Xamarin Studio Mac OS X

1 个答案:

答案 0 :(得分:0)

我在Xamarin.Forms遇到了同样的问题。 但是当我使用XLabs时,当我的应用拍照时,我可以访问MediaFile个对象。这个类有一个有趣的属性Orientation。我可以检查这个属性并执行一些代码,以便按照我想要的格式获取图像。

let prepare (orientation:ExifOrientation) img =
    match orientation with
    | ExifOrientation.BottomRight -> rotate 180 img
    | ExifOrientation.TopLeft -> img
    | _ -> img

这适合我的需要,因为我从未见过我拥有的智能手机,使用其他ExifOrientation而不是BottomRightTopLeft