Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIImage.AsJPEG()返回;无法从源类型强制转换为目标类型。”;_Ios_Xamarin.ios_Uiimage_Xamarin - Fatal编程技术网

Ios UIImage.AsJPEG()返回;无法从源类型强制转换为目标类型。”;

Ios UIImage.AsJPEG()返回;无法从源类型强制转换为目标类型。”;,ios,xamarin.ios,uiimage,xamarin,Ios,Xamarin.ios,Uiimage,Xamarin,我正在构建一个iOS应用程序,我需要在其中使用相机并将其中的图像保存到应用程序文件夹中 当我尝试将相机中的图像转换为JPEG或PNG时,我得到:“无法从源类型转换为目标类型。” 以下是我正在使用的代码: public class ImagePickerDelegate : UIImagePickerControllerDelegate { public ImagePickerDelegate() { } public override void Finished

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

当我尝试将相机中的图像转换为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
下面是我创建的一个示例项目:


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

您是否尝试过覆盖FinidPickingMedia方法而不是Finishpickingimage方法?

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

粘贴我之前的评论:

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

魔法?:)


我现在可以肯定发生了什么,但我知道的是:该项目目前正在运行,工作完美无瑕。谢谢大家的努力和帮助。

你能发布堆栈跟踪吗?@jonathanpeppers,我刚刚在原始问题中添加了堆栈跟踪。看起来UIImageJPEGresentation返回的东西不是NSData。这是否会发生在任何图像上,或者只是一个特定的图像上?@RolfBjarneKvinge即使我使用诸如:var imageData=image.AsJPEG(0.2f)之类的东西,我仍然会得到相同的错误。我从相机上得到的图像也是如此。你们的样品对我来说很好,上面的图片代码很完善。你是在模拟器上运行还是在一个设备上运行(哪个设备)?是的,我最终覆盖了这两个设备,似乎FinidPickingMedia总是被调用。我的意思是,它应该只在使用图书馆时调用吗?有相同的问题。这似乎是一种断断续续、难以追踪的现象。这里有一个bug报告