UIImage.AsJPEG()返回"无法从源类型转换为目标类型。"

时间:2014-03-12 18:54:37

标签: ios xamarin.ios uiimage xamarin

我正在构建一个iOS应用程序,我需要使用相机并将图像保存到App文件夹中。

当我尝试将图像从相机转换为JPEG或PNG时,我得到:“无法从源类型转换为目标类型。”

以下是我正在使用的代码:

public class ImagePickerDelegate : UIImagePickerControllerDelegate
{
    public ImagePickerDelegate()
    {
    }

    public override void FinishedPickingImage(UIImagePickerController picker, UIImage image, NSDictionary editingInfo)
    {
        var documentsDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
        string jpgFilename = System.IO.Path.Combine(documentsDirectory, string.Format("{0}.jpg", Guid.NewGuid()));

        using (NSData imageData = image.AsJPEG(0.2f))
        {
            NSError err;
            if (!imageData.Save(jpgFilename, false, out err))
            {
                Console.WriteLine("Saving of file failed: " + err.Description);
            }
        }
    }
}

我打电话时发生错误:

 using (NSData imageData = image.AsJPEG(0.2f))

有什么想法吗?

这是Stacktrace:

System.InvalidCastException: Cannot cast from source type to destination type.
at MonoTouch.UIKit.UIImage.AsJPEG () [0x00006] in    /Developer/MonoTouch/Source/monotouch/src/UIKit/.pmcs-compat.UIImage.cs:53
 at App.ImagePickerDelegate.FinishedPickingImage (MonoTouch.UIKit.UIImagePickerController picker, MonoTouch.UIKit.UIImage image, MonoTouch.Foundation.NSDictionary editingInfo) [0x00024] in     /Users/giusepecasagrande/Dropbox/SoftwareDev/AppName/AppName/AppName/ImagePickerDelegate.cs:37
 at at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr)
 at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/.pmcs-compat.UIApplication.cs:38
 at BeBabby.Application.Main (System.String[] args) [0x00008] in /Users/giusepecasagrande/Dropbox/SoftwareDev/AppName/AppName/AppName/Main.cs:16

这是我创建的示例项目: https://github.com/GiusepeCasagrande/XamarinSimpleCameraSample/tree/master

如果您在Picker委托中输入这部分代码,则可以看到问题。

2 个答案:

答案 0 :(得分:1)

您是否尝试重写方法FinidPickingMedia而不是Finishpickingimage?

答案 1 :(得分:1)

我正在回答这个问题,因为问题似乎以某种方式解决了。示例项目现在正在运行。

粘贴我之前提出的评论:

在我看来,崩溃的相同代码,我粘贴在这里,然后复制回项目,现在它的工作。

魔术? :)

我现在确定发生了什么,但我所知道的是:该项目现在正在运行并且运行完美。谢谢大家的努力和帮助。