我正在构建一个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委托中输入这部分代码,则可以看到问题。
答案 0 :(得分:1)
您是否尝试重写方法FinidPickingMedia而不是Finishpickingimage?
答案 1 :(得分:1)
我正在回答这个问题,因为问题似乎以某种方式解决了。示例项目现在正在运行。
粘贴我之前提出的评论:
在我看来,崩溃的相同代码,我粘贴在这里,然后复制回项目,现在它的工作。
魔术? :)
我现在确定发生了什么,但我所知道的是:该项目现在正在运行并且运行完美。谢谢大家的努力和帮助。