Пример #1
0
        protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);

            if ((requestCode == PickImageId) && (resultCode == Result.Ok) && (data != null))
            {
                Android.Net.Uri uri = data.Data;
                //get the selected file
                using (Android.Runtime.InputStreamInvoker stream = ContentResolver.OpenInputStream(uri) as Android.Runtime.InputStreamInvoker)
                {
                    //InputStreamInvoker.Position throws a System.NotSupportedException: Specified method is not supported.
                    //stream.Position = 0;
                    //therefore create a new memoryStream
                    using (MemoryStream memoryStream = new MemoryStream())
                    {
                        stream.CopyTo(memoryStream);
                        memoryStream.Position = 0;
                        using (Image <Rgba32> image = SixLabors.ImageSharp.Image.Load(memoryStream)) //causes the app to crash
                        {
                            var format = SixLabors.ImageSharp.Image.DetectFormat(stream);
                            //var output = new MemoryStream();
                            //image.Mutate(x => x.Resize(50, 50));
                            //image.Save(output, format);
                        }
                    }
                }
            }
        }
Пример #2
0
        internal static int GetAvailable(Android.Runtime.InputStreamInvoker stream)
        {
            if (stream == null)
            {
                return(0);
            }

            try
            {
                return(stream.BaseInputStream.Available());
            }
            catch (Java.IO.IOException)
            {
            }

            return(0);
        }
Пример #3
0
        partial void ReadFileFromAssets(string file, ref List <byte> result)
        {
            file = file.Replace(EngineNS.CEngine.Instance.FileManager.ProjectRoot, "").ToLower();
            Android.Runtime.InputStreamInvoker stream = (Android.Runtime.InputStreamInvoker)AssetManager.Open(file);

            Type type = stream.GetType();
            int  len  = stream.BaseInputStream.Available();

            if (stream != null || len > 0)
            {
                byte[] bytes = new byte[len];
                stream.Read(bytes, 0, len);
                stream.Close();

                result.AddRange(bytes);
            }
        }