Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.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
C# 以Xamarin表单将图像从图像框保存到库_C#_Android_Xamarin_Xamarin.forms - Fatal编程技术网

C# 以Xamarin表单将图像从图像框保存到库

C# 以Xamarin表单将图像从图像框保存到库,c#,android,xamarin,xamarin.forms,C#,Android,Xamarin,Xamarin.forms,有没有办法将图像控件中的图片以Xamarin格式保存到Android gallery?感谢所有的帮助 var image = new Image(); image.Source = "test.png"; 您可以使用媒体插件,它可以解决您的问题 您可以访问上面的链接 takePhoto.Clicked += async (sender, args) => { await CrossMedia.Current.Initialize(); if (!CrossMedia.C

有没有办法将图像控件中的图片以Xamarin格式保存到Android gallery?感谢所有的帮助

var image = new Image();
image.Source = "test.png";

您可以使用媒体插件,它可以解决您的问题

您可以访问上面的链接

takePhoto.Clicked += async (sender, args) =>
{
    await CrossMedia.Current.Initialize();

    if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
    {
        DisplayAlert("No Camera", ":( No camera available.", "OK");
        return;
    }

    var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
    {
        Directory = "Sample",
        Name = "test.jpg"
    });

    if (file == null)
        return;

    await DisplayAlert("File Location", file.Path, "OK");

    image.Source = ImageSource.FromStream(() =>
    {
        var stream = file.GetStream();
        return stream;
    }); 
};

您可以使用
Dependency Service
Resource/drawable
图像获取流

创建IDependency接口

public interface IDependency
{
    MemoryStream DrawableByNameToByteArray(string fileName);
}
Android实现

public class DependencyImplementation : IDependency
{
    public MemoryStream DrawableByNameToByteArray(string fileName)
    {
        var context = Application.Context;
        using (var drawable = Xamarin.Forms.Platform.Android.ResourceManager.GetDrawable(context, fileName))
        using (var bitmap = ((BitmapDrawable)drawable).Bitmap)
        {
            var stream = new MemoryStream();
            bitmap.Compress(Bitmap.CompressFormat.Png, 100, stream);
            bitmap.Recycle();
            return stream;
        }
    }
}
对于IOS实现,您可以参考SO中的线程。

然后在Android Mainactivity中注册

DependencyService.Register<IDependency, DependencyImplementation>();
在内部存储中,如果没有root权限,则无法查看文件。 如果您想查看它,可以使用adb工具。 请在链接中检查路径。

好的,您能提供一些示例代码吗?对不起,我对Xamarin表单还是相当陌生的。谢谢你的回复!我不是想拍照。我正在尝试将图片框中的照片保存到图库中。
var filename = "";
        var source = image.Source as FileImageSource;
        if (source != null)
        {
            filename = source.File;
        }

        var savingFile = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyPictures);
        //var savingFile1 = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData), "save.png");
        var S = DependencyService.Get<IDependency>().DrawableByNameToByteArray(filename);


        if (!File.Exists(savingFile))
        {
            File.WriteAllBytes(savingFile, S.ToArray());               
        }