Silverlight/ImageTools to Convert Webcam Imagesource to Jpeg not working
I have a utility that allows the user to take a camera photo and upload it, in addition to another option to upload a file.  I've got most of it working, except for the part where I have to convert the webcam image to a jpg prior to upload.  The code below has no error but produces invalid image data:




    void CaptureImageCompleted(object sender, CaptureImageCompletedEventArgs e)
    {
        busyIndicator.IsBusy = true;
        stopCapture();
        capturedImage.ImageSource = e.Result;

        ImageTools.ExtendedImage eimg = e.Result.ToImage();
        var encoder = new ImageTools.IO.Jpeg.JpegEncoder();

        Stream stream = eimg.ToStreamByExtension("jpg");
        
        //DO THIS LATER
        //if (stream.Length > 512000)
        //{
        //    eimg = ExtendedImage.Resize(eimg, 240, new NearestNeighborResizer());
        //    stream = eimg.ToStreamByExtension("jpg");
        //}

        encoder.Encode(eimg, stream);

        BitmapImage bitmap = new BitmapImage();
        bitmap.SetSource(stream);

        byte[] bytes = new byte[stream.Length];
        stream.Read(bytes, 0, (int)stream.Length);

        // picture file a class object to be used by uploader
        pictureFile.PictureName = "webcam.jpg";  // name will be changed later
        pictureFile.PictureStream = bytes;


        HtmlPage.Window.Invoke("gotDetails_WebCam", "");  // post page, then come back and do upload
    }


Here is what PictureFile looks like:


    [DataContract]
    public class PictureFile
    {
        [DataMember]
        public string PictureName { get; set; }
    
        [DataMember]
        public byte[] PictureStream { get; set; }
    }





Can anyone figure out what I'm doing wrong to produce the bytes needed for a jpeg?




Silverlight/ImageTools to Convert Webcam Imagesource to Jpeg not working
===

I have a utility that allows the user to take a camera photo and upload it, in addition to another option to upload a file.  I've got most of it working, except for the part where I have to convert the webcam image to a jpg prior to upload.  The code below has no error but produces invalid image data:




    void CaptureImageCompleted(object sender, CaptureImageCompletedEventArgs e)
    {
        busyIndicator.IsBusy = true;
        stopCapture();
        capturedImage.ImageSource = e.Result;

        ImageTools.ExtendedImage eimg = e.Result.ToImage();
        var encoder = new ImageTools.IO.Jpeg.JpegEncoder();

        Stream stream = eimg.ToStreamByExtension("jpg");
        
        //DO THIS LATER
        //if (stream.Length > 512000)
        //{
        //    eimg = ExtendedImage.Resize(eimg, 240, new NearestNeighborResizer());
        //    stream = eimg.ToStreamByExtension("jpg");
        //}

        encoder.Encode(eimg, stream);

        BitmapImage bitmap = new BitmapImage();
        bitmap.SetSource(stream);

        byte[] bytes = new byte[stream.Length];
        stream.Read(bytes, 0, (int)stream.Length);

        // picture file a class object to be used by uploader
        pictureFile.PictureName = "webcam.jpg";  // name will be changed later
        pictureFile.PictureStream = bytes;


        HtmlPage.Window.Invoke("gotDetails_WebCam", "");  // post page, then come back and do upload
    }


Here is what PictureFile looks like:


    [DataContract]
    public class PictureFile
    {
        [DataMember]
        public string PictureName { get; set; }
    
        [DataMember]
        public byte[] PictureStream { get; set; }
    }





Can anyone figure out what I'm doing wrong to produce the bytes needed for a jpeg?



