Pregunta

Estoy tratando de capturar una imagen y luego enviarlo en la imagen a parse.com, incluidos otros valores de objeto. Para que sea corto, estaba enviando la imagen a parse.com tan pronto como capture la imagen sin siquiera el evento Button_Click.Está funcionando pero no lo que quiero.Quiero guardar el flujo de memoria y luego use el flujo guardado para enviar en el botón Pars.com en el botón, haga clic con las otras variables de objeto.

Este es el código donde estoy capturando la imagen y enviándolo a parse.com

  private async void cameraCapture_Completed(object sender, PhotoResult e)
    {
        if (e.TaskResult != TaskResult.OK) return;

        var capturedPhoto = new BitmapImage();
        capturedPhoto.SetSource(e.ChosenPhoto);
        ImgView.Source = capturedPhoto;

        PictureFileName = today.ToString();
        {
            using (var memoryStream = new MemoryStream())
            {
                // Get a stream of the captured photo
                var writableBitmap = new WriteableBitmap(capturedPhoto);
                writableBitmap.SaveJpeg(memoryStream, capturedPhoto.PixelWidth, capturedPhoto.PixelHeight, 0, 100);

                PhotoResult photoResult = e as PhotoResult;

                photoResult.ChosenPhoto.CopyTo(memoryStream);

                memoryStream.Position = 0; // Rewind the stream

                byte[] myPicArray = memoryStream.ToArray();

                ParseFile ImageFile = new ParseFile(PictureFileName, myPicArray);
                await ImageFile.SaveAsync();


                var image = new ParseObject("ImageUpload");
                image["photo"] = ImageFile;
                image["description"] = TextBox.Text;

                await image.SaveAsync();
            }
        }
    }

Este es mi botón, haga clic en Código donde quiero enviar esa imagen en su clic en lugar de enviarlo directamente después de la captura.Quiero guardar la transmisión de la imagen si es posible y luego envíelo a parse.com en el botón Click.

private async void Btn_Click(object sender, RoutedEventArgs e)
    {
        var image = new ParseObject("ImageUpload");
        image["photo"] = imageFile; //how to bring that memory stream here ???
        image["description"] = TxtBox.Text;

        await image.SaveAsync();
    }

¿Fue útil?

Solución

private void cameraCapture_Completed(object sender, PhotoResult e)
    {

        if (e.TaskResult != TaskResult.OK) return;

        var capturedPhoto = new BitmapImage();
        capturedPhoto.SetSource(e.ChosenPhoto);
        ImgView.Source = capturedPhoto;

        FileName = today.ToString();


        {
            using (var memoryStream = new MemoryStream())
            {
                // Get a stream of the captured photo
                var writableBitmap = new WriteableBitmap(capturedPhoto);
                writableBitmap.SaveJpeg(memoryStream, capturedPhoto.PixelWidth, capturedPhoto.PixelHeight, 0, 50);

                PhotoResult photoResult = e as PhotoResult;

                photoResult.ChosenPhoto.CopyTo(memoryStream);

                memoryStream.Position = 0; // Rewind the stream

                myPic = memoryStream.ToArray(); //  byte[] myPic; has been decleared in inital
            }
        }
    }

en el botón Click

private async void BtnPost_Click(object sender, RoutedEventArgs e)
    {

        ParseFile ImageFile = new ParseFile(FileName, myPic);
        await ImageFile.SaveAsync();

        var imageUpload = new ParseObject("ImageUpload ");
        imageUpload["photo"] = ImageFile;

        await imageUpload.SaveAsync();

    }

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top