Ios UIImage.AsJPEG()返回;无法从源类型强制转换为目标类型。”;
我正在构建一个iOS应用程序,我需要在其中使用相机并将其中的图像保存到应用程序文件夹中 当我尝试将相机中的图像转换为JPEG或PNG时,我得到:“无法从源类型转换为目标类型。” 以下是我正在使用的代码: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
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报告