示例#1
0
        public void OnImageAvailable(ImageReader reader)
        {
            var img = reader.AcquireNextImage();

            var btmp = ImageProcessing.ConvertImgToBtmp(img);

            if (owner.isFaceCamera)
            {
                if (owner.mSensorOrientation == ImageOrientation.Portrait)
                {
                    owner.mSensorOrientation = ImageOrientation.PortraitBottom;
                }
                else if (owner.mSensorOrientation == ImageOrientation.PortraitBottom)
                {
                    owner.mSensorOrientation = ImageOrientation.Portrait;
                }
            }

            ImageProcessing.RotateBitmap(owner.mSensorOrientation, ref btmp);

            var imageSaver = new ImageSaver(btmp, owner.GetExternalFilesDir(null), mre);

            owner.mBackgroundHandler.Post(imageSaver);
            PostResult = imageSaver.mFile;
        }
示例#2
0
        public async void OnImageAvailable(ImageReader reader)
        {
            var image  = reader.AcquireNextImage();
            var plane  = image.GetPlanes()[0];
            var buffer = plane.Buffer;

            byte[] paso = new byte[buffer.Remaining()];
            buffer.Get(paso);

            //Bitmap bitmap =await BitmapFactory.DecodeByteArrayAsync(paso, 0, paso.Length);


            //byte[] imageBytes = null;
            //using (var imageStream = new MemoryStream())
            //{
            //    await bitmap.CompressAsync(Bitmap.CompressFormat.Jpeg, 50, imageStream);
            //    bitmap.Recycle();
            //    imageBytes = imageStream.ToArray();
            //}
            //image.Close();

            var manipulatePic = (new SvgManipulatePhotoPage(paso));

            Xamarin.Forms.Device.BeginInvokeOnMainThread(async() =>
            {
                await App.Current.MainPage.Navigation.PushAsync(manipulatePic, false);
            });
        }
示例#3
0
            public void OnImageAvailable(ImageReader reader)
            {
                Image image = null;

                try
                {
                    image = reader.AcquireNextImage();
                    ByteBuffer buffer = image.GetPlanes()[0].Buffer;
                    byte[]     bytes  = new byte[buffer.Capacity()];
                    buffer.Get(bytes);
                    Save(bytes);
                    fragment.PictureTaken?.Invoke();
                }
                catch (FileNotFoundException ex)
                {
                    Log.WriteLine(LogPriority.Info, "Camera capture session", ex.StackTrace);
                }
                catch (IOException ex)
                {
                    Log.WriteLine(LogPriority.Info, "Camera capture session", ex.StackTrace);
                }
                finally
                {
                    if (image != null)
                    {
                        image.Close();
                    }
                }
            }
        public void OnImageAvailable(ImageReader reader)
        {
            Android.Media.Image image = null;
            byte[] bytes = null;

            try
            {
                image = reader.AcquireNextImage();

                var buffer = image.GetPlanes()[0].Buffer;
                var length = buffer.Remaining();

                bytes = new byte[length];

                buffer.Get(bytes);

                HandleImage(bytes);
            }
            finally
            {
                if (image != null)
                {
                    image.Close();
                }
            }
        }
示例#5
0
        public void OnImageAvailable(ImageReader reader)
        {
            var    filename = string.Format("IMG_{0}.jpg", DateTime.Now.ToString("yyyyMMdd_HHmmss_ff"));
            string path     = System.IO.Path.Combine(CrossMultiPictures.Current.MediaFolderPath(_mediaOptions), filename);

            _camera2.BackgroundHandler.Post(new ImageSaver(reader.AcquireNextImage(), new File(path), _mediaOptions, _camera2.DeviceRotation, ImageAvailable));
        }
示例#6
0
        public void OnImageAvailable(ImageReader?reader)
        {
            AImage?image = null;

            try
            {
                image = reader?.AcquireNextImage();
                if (image == null)
                {
                    return;
                }

                var buffer = image.GetPlanes()?[0].Buffer;
                if (buffer == null)
                {
                    return;
                }

                var imageData = new byte[buffer.Capacity()];
                buffer.Get(imageData);

                Photo?.Invoke(this, imageData);
                buffer.Clear();
            }
            catch (Exception)
            {
            }
            finally
            {
                image?.Close();
            }
        }
示例#7
0
            private void OnImageAvailable(ImageReader reader)
            {
                try
                {
                    Image image = reader.AcquireNextImage();

                    ByteBuffer buffer = image.GetPlanes()[0].Buffer;
                    byte[]     bytes  = new byte[buffer.Capacity()];
                    buffer.Get(bytes);

                    _uploader.Queue(bytes);

                    Bitmap bitmap  = BitmapFactory.DecodeByteArray(bytes, 0, bytes.Length);
                    var    imgview = Activity.FindViewById <ImageView>(Resource.Id.theimage);

                    Activity.RunOnUiThread(() =>
                    {
                        imgview.SetImageBitmap(bitmap);
                        imgview.Rotation = Rotation; //  == 90 ? 0 : 180;
                    });

                    image.Close();
                }
                catch (System.Exception e)
                {
                    OnError("Failed to process image:" + e.Message);
                }
            }
        //public File File { get; private set; }
        //public Camera2BasicFragment Owner { get; private set; }

        public void OnImageAvailable(ImageReader reader)
        {
            file = owner.mFile;
            Image image = reader.AcquireNextImage();

            imgWidth  = image.Width;
            imgHeight = image.Height;
            owner.mBackgroundHandler.Post(new ImageSaver(image, file));
        }
示例#9
0
        public void OnImageAvailable(ImageReader reader)
        {
            Image      image  = reader.AcquireNextImage();
            ByteBuffer buffer = image.GetPlanes()[0].Buffer;

            byte[] bytes = new byte[buffer.Remaining()];
            buffer.Get(bytes);
            Owner.FrameReceived(bytes, SKImage.FromEncodedData(bytes));
            image.Close();
        }
        public void OnImageAvailable(ImageReader reader)
        {
            var        image  = reader.AcquireNextImage();
            ByteBuffer buffer = image.GetPlanes()[0].Buffer;

            byte[] bytes = new byte[buffer.Remaining()];
            buffer.Get(bytes);
            image.Close();

            owner.PhotoCapturedHandler(bytes);
        }
示例#11
0
        public void OnImageAvailable(ImageReader reader)
        {
            Image image = null;

            try
            {
                image = reader.AcquireNextImage();
                var buffer    = image.GetPlanes()[0].Buffer;
                var imageData = new byte[buffer.Capacity()];
                buffer.Get(imageData);

                Photo?.Invoke(this, imageData);
            }
            catch (Exception e)
            {
                Error?.Invoke(this, e);
            }
            finally
            {
                image?.Close();
            }
        }
        public async void OnImageAvailable(ImageReader reader)
        {
            Image image = null;

            try
            {
                // https://stackoverflow.com/questions/36419722/error-unable-to-acquire-a-lockedbuffer-very-likely-client-tries-to-lock-more-t
                image = reader.AcquireNextImage();
                //image = reader.AcquireLatestImage();
                ByteBuffer buffer = image.GetPlanes()[0].Buffer;
                byte[]     bytes  = new byte[buffer.Capacity()];
                buffer.Get(bytes);
                await Save(bytes);

                if (Fragment?.Activity == null || File == null)
                {
                    return;
                }

                Fragment.OnPause();

                ((CameraActivity)Fragment.Activity).ReturnWithFile(File.ToString());
            }
            catch (FileNotFoundException ex)
            {
                System.Console.WriteLine(ex.Message);
            }
            catch (IOException ex)
            {
                System.Console.WriteLine(ex.Message);
            }
            finally
            {
                image?.Close();
            }
        }
示例#13
0
 public void OnImageAvailable(ImageReader reader)
 {
     Owner.mBackgroundHandler.Post(new ImageSaver(reader.AcquireNextImage(), File));
 }
示例#14
0
 public void OnImageAvailable(ImageReader reader)
 {
     owner.mBackgroundHandler.Post(new ImageSaver(activity, context, owner, reader.AcquireNextImage()));
 }
        //public File File { get; private set; }
        //public Camera2BasicFragment Owner { get; private set; }

        public void OnImageAvailable(ImageReader reader)
        {
            var file = new File(((Activity)context).GetExternalFilesDir(null), Guid.NewGuid().ToString() + ".jpg");

            owner.mBackgroundHandler.Post(new ImageSaver(reader.AcquireNextImage(), file, photos));
        }
示例#16
0
        //public File File { get; private set; }
        //public CameraFragment Owner { get; private set; }

        public void OnImageAvailable(ImageReader reader)
        {
            ImageSaver imageSaver = new ImageSaver(reader.AcquireNextImage(), _context);

            owner.mBackgroundHandler.Post(imageSaver);
        }
示例#17
0
        public void OnImageAvailable(ImageReader reader)
        {
            Image image = reader.AcquireNextImage();

            _owner.BackgroundHandler.Post(new ImageUploader(image));
        }
示例#18
0
            public void OnImageAvailable(ImageReader reader)
            {
                Bitmap bitmap = mainActivity.mImagePreprocessor.preprocessImage(reader.AcquireNextImage());

                mainActivity.OnPhotoReady(bitmap);
            }
示例#19
0
 public void OnImageAvailable(ImageReader reader) =>
 _cameraBackgroundHandler.Post(new ImageSaver(this, reader.AcquireNextImage()));
示例#20
0
 public void OnImageAvailable(ImageReader reader)
 {
     owner.mBackgroundHandler.Post(new ImageInferer(reader.AcquireNextImage(), file, owner));
 }