Exemple #1
0
        private void saveMenu_Click(object sender, EventArgs e)
        {
            MessageBoxResult value = MessageBox.Show(AppResources.SaveMessage, "", MessageBoxButton.OKCancel);

            if (value == MessageBoxResult.OK)
            {
                if (imageCollection[imageIndex].bitMap == null)
                {
                    MessageBox.Show(AppResources.SaveFail);
                }
                else
                {
                    WriteableBitmap wb = new WriteableBitmap(imageCollection[imageIndex].bitMap);
                    using (MemoryStream ms = new MemoryStream())
                    {
                        wb.SaveJpeg(ms, imageCollection[imageIndex].bitMap.PixelWidth, imageCollection[imageIndex].bitMap.PixelHeight, 0, 100);
                        MediaLibrary lib = new MediaLibrary();
                        // This is important!!!
                        ms.Seek(0, SeekOrigin.Begin);
                        lib.SavePictureToCameraRoll(Guid.NewGuid().ToString(), ms);
                        MessageBox.Show(AppResources.SaveSuccess);
                    }
                }
            }
        }
        /// <summary>
        /// Clicking on the save button saves the photo in DataContext.ImageStream to media library
        /// camera roll. Once image has been saved, the application will navigate back to the main page.
        /// </summary>
        private void saveButton_Click(object sender, EventArgs e)
        {
            try
            {
                // Reposition ImageStream to beginning, because it has been read already in the OnNavigatedTo method.
                _dataContext.ImageStream.Position = 0;

                MediaLibrary library = new MediaLibrary();
                library.SavePictureToCameraRoll("CameraExplorer_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg", _dataContext.ImageStream);

                // There should be no temporary file left behind
                using (var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    var files = isolatedStorage.GetFileNames("CameraExplorer_*.jpg");
                    foreach (string file in files)
                    {
                        isolatedStorage.DeleteFile(file);
                        //System.Diagnostics.Debug.WriteLine("Temp file deleted: " + file);
                    }
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine("Saving picture to camera roll failed: " + ex.HResult.ToString("x8") + " - " + ex.Message);
            }

            NavigationService.GoBack();
        }
Exemple #3
0
        void camCaptureImageAvailable(object sender, ContentReadyEventArgs e)
        {
            string photo = photoname + ".jpg";

            try
            {
                // Add to phone's media library camera roll.
                library.SavePictureToCameraRoll(photo, e.ImageStream);

                e.ImageStream.Seek(0, SeekOrigin.Begin);

                // Save as JPEG to IsolatedStorage
                using (IsolatedStorageFile isStore = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    using (IsolatedStorageFileStream targetStream = isStore.OpenFile(photo, FileMode.Create, FileAccess.Write))
                    {
                        byte[] readBuffer = new byte[4096];
                        int    bytesRead  = -1;

                        while ((bytesRead = e.ImageStream.Read(readBuffer, 0, readBuffer.Length)) > 0)
                        {
                            targetStream.Write(readBuffer, 0, bytesRead);
                        }
                    }
                }
                System.Diagnostics.Debug.WriteLine("Saved");
            }
            finally
            {
                e.ImageStream.Close();
            }
        }
        /// <summary>
        /// Clicking on the save button saves the photo in DataContext.ImageStream to media library
        /// camera roll. Once image has been saved, the application will navigate back to the main page.
        /// </summary>
        private void saveButton_Click(object sender, EventArgs e)
        {
            try
            {
                // Reposition ImageStream to beginning, because it has been read already in the OnNavigatedTo method.
                _dataContext.ImageStream.Position = 0;

                MediaLibrary library = new MediaLibrary();
                library.SavePictureToCameraRoll("CameraExplorer_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg", _dataContext.ImageStream);

                // There should be no temporary file left behind
                using (var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    var files = isolatedStorage.GetFileNames("CameraExplorer_*.jpg");
                    foreach (string file in files)
                    {
                        isolatedStorage.DeleteFile(file);
                        //System.Diagnostics.Debug.WriteLine("Temp file deleted: " + file);
                    }
                }

            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine("Saving picture to camera roll failed: " + ex.HResult.ToString("x8") + " - " + ex.Message);
            }

            NavigationService.GoBack();
        }
Exemple #5
0
        private void SaveImageToCameraRoll(Stream stream, MemoryStream thumbStream)
        {
            string   fileName = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff") + "#" + m_sequenceGuid.ToString();
            ExifFile exif     = ExifFile.ReadStream(stream);
            string   metadata = GetMetadata(fileName);

            byte[] data        = Encoding.UTF8.GetBytes(metadata);
            uint   length      = (uint)data.Length;
            ushort type        = 2;
            var    imgDescProp = ExifPropertyFactory.Get(0x010e, type, length, data, BitConverterEx.ByteOrder.BigEndian, IFD.Zeroth);

            exif.Properties.Add(ExifTag.ImageDescription, imgDescProp);

            using (var ml = new MediaLibrary())
            {
                exif.SaveToCameraRoll("mapi_" + fileName + ".jpg", ml);
                using (var memstream = new MemoryStream())
                {
                    WriteableBitmap bmp = new WriteableBitmap(100, 75);
                    bmp = bmp.FromStream(thumbStream);
                    WriteableBitmap tBmp = bmp.Resize(100, 75, WriteableBitmapExtensions.Interpolation.NearestNeighbor);
                    tBmp.SaveJpeg(memstream, 100, 75, 0, 90);
                    memstream.Seek(0, SeekOrigin.Begin);
                    ml.SavePictureToCameraRoll("mapi_thumb_" + fileName + ".jpg", memstream);
                }
            }

            stream.Close();
            thumbStream.Close();
            stream.Dispose();
            thumbStream.Dispose();
        }
Exemple #6
0
        private void CamCaptureImageAvailable(object sender, ContentReadyEventArgs e)
        {
            string fileName = _savedCounter + ".jpg";

            try
            {
                _library.SavePictureToCameraRoll(fileName, e.ImageStream);
                e.ImageStream.Seek(0, SeekOrigin.Begin);

                using (IsolatedStorageFile isStore = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    using (
                        IsolatedStorageFileStream targetStream = isStore.OpenFile(fileName, FileMode.Create,
                                                                                  FileAccess.Write))
                    {
                        byte[] readBuffer = new byte[4096];
                        int    bytesRead;

                        while ((bytesRead = e.ImageStream.Read(readBuffer, 0, readBuffer.Length)) > 0)
                        {
                            targetStream.Write(readBuffer, 0, bytesRead);
                        }
                    }
                }
            }
            finally
            {
                e.ImageStream.Close();

                GlobalVars.PhotoName = fileName;

                Dispatcher.BeginInvoke(() =>
                                       NavigationService.Navigate(new System.Uri("/Emergency.xaml", System.UriKind.Relative)));
            }
        }
Exemple #7
0
        private void SaveImageToCameraRoll(int imageHandle, String imageName, Resource imageResource)
        {
            MediaLibrary library      = new MediaLibrary();
            MemoryStream targetStream = new MemoryStream();

            int mediaType       = MoSync.Constants.MA_MEDIA_TYPE_IMAGE;
            int mediaHandle     = imageHandle;
            int eventReturnCode = MoSync.Constants.MA_MEDIA_RES_OK;

            try
            {
                WriteableBitmap data = (WriteableBitmap)imageResource.GetInternalObject();
                data.SaveJpeg(targetStream, data.PixelWidth, data.PixelHeight, 0, 100);
                data = null;

                library.SavePictureToCameraRoll(imageName, targetStream.GetBuffer()).Dispose();
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine(e.ToString());
                eventReturnCode = MoSync.Constants.MA_MEDIA_RES_IMAGE_EXPORT_FAILED;
            }
            finally
            {
                library.Dispose();
                targetStream.Dispose();
                PostMediaEvent(mediaType, mediaHandle, eventReturnCode);
            }
        }
Exemple #8
0
        /// <summary>
        /// Method which actually saves the image to the cameraroll.
        /// This code was provided to me by Nokia
        /// </summary>
        /// <param name="imgStream">Stream of the image that we want to save</param>
        private void SaveImage(Stream imgStream, int tileIndex, WriteableBitmap wbmp, string saveFileName, bool saveToCameraRoll)
        {
            MediaLibrary library   = new MediaLibrary();
            string       imageName = saveFileName;
            var          myStore   = IsolatedStorageFile.GetUserStoreForApplication();

            //tileIndex will be < = if we want to save to cameraroll/saved pictures
            if (tileIndex <= 0)
            {
                Picture p = saveToCameraRoll ? library.SavePictureToCameraRoll(imageName, imgStream) : library.SavePicture(imageName, imgStream);
                MessageBox.Show("Image Saved to 'Saved Pictures'");
            }
            //remove the file from isolated storage
            string tempFile = imageName.Replace(".jpg", "_jpg.jpg");

            if (myStore.FileExists(tempFile))
            {
                myStore.DeleteFile(tempFile);
            }

            //otherewise save to live tiles
            if (tileIndex > 0 && tileIndex < 10)
            {
                string fileName = "/Shared/ShellContent/tile" + tileIndex + ".jpg";

                using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream(fileName, FileMode.OpenOrCreate, myStore))
                {
                    wbmp.SaveJpeg(isoStream, wbmp.PixelWidth, wbmp.PixelHeight, 0, 100);
                }
            }

            myStore.Dispose();
        }
Exemple #9
0
        private void image_Hold(object sender, System.Windows.Input.GestureEventArgs e)
        {
            MessageBoxResult value = MessageBox.Show(AppResources.SaveMessage, "", MessageBoxButton.OKCancel);

            if (value == MessageBoxResult.OK)
            {
                if (currentImage.bitMap == null)
                {
                    MessageBox.Show(AppResources.SaveFail);
                }
                else
                {
                    WriteableBitmap wb = new WriteableBitmap(currentImage.bitMap);
                    using (MemoryStream ms = new MemoryStream()) {
                        wb.SaveJpeg(ms, currentImage.bitMap.PixelWidth, currentImage.bitMap.PixelHeight, 0, 100);
                        DateTime     dt  = DateTime.Now;
                        MediaLibrary lib = new MediaLibrary();
                        // This is important!!!
                        ms.Seek(0, SeekOrigin.Begin);
                        lib.SavePictureToCameraRoll(dt.Year + "-" + dt.Month + "-" + dt.Day + "-" + dt.Hour + "-" + dt.Minute + "-" + dt.Second, ms);
                        MessageBox.Show(AppResources.SaveSuccess);
                    }
                }
            }
        }
Exemple #10
0
 /// <summary>
 /// カメラロールへファイルを保存する
 /// 既存の同名ファイルが存在している場合はファイルを上書きする
 /// </summary>
 /// <param name="fileName">拡張子を含むファイル名</param>
 /// <param name="stream">保存するデータのストリーム</param>
 public static void SaveToCameraRoll(this Stream stream, string fileName)
 {
     stream.Position = 0;
     using (var ml = new MediaLibrary())
     {
         ml.SavePictureToCameraRoll(fileName, stream);
     }
 }
Exemple #11
0
        // AACODE: Converts bitmap image to jpeg and saves it in the media library
        // Returns true if save successful otherwise false
        public static bool SavePictureToMediaLibrary(string fileName, WriteableBitmap bmp)
        {
            // Reference to the Media Library
            MediaLibrary library = new MediaLibrary();

            try
            {
                // If the file does not exist then save the file
                if (library.Pictures[library.Pictures.Count - 1].Name != fileName)
                {
                    // Convert the bitmap file to jpeg format
                    MemoryStream memStream = new MemoryStream();
                    bmp.SaveJpeg(memStream, bmp.PixelWidth, bmp.PixelHeight, 0, 100);
                    memStream.Seek(0, SeekOrigin.Begin);

                    // Save photo to the media library camera roll.
                    library.SavePictureToCameraRoll(fileName, memStream);
                    memStream.Close();
                }
                else
                {
                    // This file has already been saved
                    return(false);
                }

                return(true);
            }
            catch (Exception ex)
            {
                // TODO: Log error message
                if (library.Pictures.Count == 0)
                {
                    // Convert the bitmap file to jpeg format
                    MemoryStream memStream = new MemoryStream();
                    bmp.SaveJpeg(memStream, bmp.PixelWidth, bmp.PixelHeight, 0, 100);
                    memStream.Seek(0, SeekOrigin.Begin);

                    // Save photo to the media library camera roll.
                    library.SavePictureToCameraRoll(fileName, memStream);
                    memStream.Close();
                    return(true);
                }
                return(false);
            }
        }
Exemple #12
0
        public Task <HttpResponseMessage> UploadPhotoAsync(Uri location, string secret, Stream photo)
        {
            using (MediaLibrary ml = new MediaLibrary())
            {
                photo.Position = 0;
                ml.SavePictureToCameraRoll(location.ToString(), photo);
            }

            return(Task.FromResult <HttpResponseMessage>(new HttpResponseMessage()));
        }
Exemple #13
0
 internal void SaveToCameraRoll(string filename, MediaLibrary ml)
 {
     using (var memStream = new MemoryStream())
     {
         Save(memStream);
         memStream.Seek(0, SeekOrigin.Begin);
         ml.SavePictureToCameraRoll(filename, memStream);
         memStream.Close();
     }
 }
Exemple #14
0
 private void CopyAndNavigate(IsolatedStorageFileStream stream)
 {
     using (var ms = new MemoryStream())
     {
         stream.CopyTo(ms);
         ms.Seek(0, SeekOrigin.Begin);
         var lib     = new MediaLibrary();
         var picture = lib.SavePictureToCameraRoll(_videoPath, ms);
         //.DeleteFile(_videoPath);
     }
 }
 /// <summary>
 /// Saves the WriteableBitmap encoded as JPEG to the Media library.
 /// </summary>
 /// <param name="bitmap">The WriteableBitmap to save.</param>
 /// <param name="name">The name of the destination file.</param>
 /// <param name="quality">The quality for JPEG encoding has to be in the range 0-100,
 /// where 100 is the best quality with the largest size.</param>
 /// <param name="saveToCameraRoll">If true the bitmap will be saved to the camera roll, otherwise it will be written to the default saved album.</param>
 public static Picture SaveToMediaLibrary(this WriteableBitmap bitmap, string name, int quality, bool saveToCameraRoll = false)
 {
     using (var stream = new MemoryStream())
     {
         // Save the picture to the WP media library
         bitmap.SaveJpeg(stream, bitmap.PixelWidth, bitmap.PixelHeight, 0, quality);
         stream.Seek(0, SeekOrigin.Begin);
         var mediaLibrary = new MediaLibrary();
         return(saveToCameraRoll ? mediaLibrary.SavePictureToCameraRoll(name, stream) : mediaLibrary.SavePicture(name, stream));
     }
 }
        public void SaveToCameraRoll(string fileName)
        {
            IsolatedStorageFileStream fileStream = storage.OpenFile(fileName, FileMode.Open, FileAccess.Read);
            MediaLibrary mediaLibrary            = new MediaLibrary();
            Picture      pic = mediaLibrary.SavePictureToCameraRoll(fileName, fileStream);

            fileStream.Dispose();
            mediaLibrary.Dispose();
            pic.Dispose();
            storage.DeleteFile(fileName.Remove(fileName.IndexOf(".")) + "_jpg.jpg");
            storage.DeleteFile(fileName.Remove(fileName.IndexOf(".")) + "_png.jpg");
        }
Exemple #17
0
        //Informs when full resolution picture has been taken and stores it
        void cam_CaptureImageAvailable(object sender, Microsoft.Devices.ContentReadyEventArgs e)
        {
            string fileName = savedCounter + ".jpg";

            try
            {   //Write message to the UI
                Deployment.Current.Dispatcher.BeginInvoke(delegate()
                {
                    txtDebug.Text = "Captured image available, saving picture...";
                });

                //Save picture camera roll
                library.SavePictureToCameraRoll(fileName, e.ImageStream);

                //Write message UI
                Deployment.Current.Dispatcher.BeginInvoke(delegate()
                {
                    txtDebug.Text = "Picture has been saved to camera roll...";
                });

                //Set position of stream back to start
                e.ImageStream.Seek(0, SeekOrigin.Begin);

                //Save picture as JPEG
                using (IsolatedStorageFile isStore = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    using (IsolatedStorageFileStream targetStream = isStore.OpenFile(fileName, FileMode.Create, FileAccess.Write))
                    {
                        //Initialize buffer for 4KB disk pages
                        byte[] readBuffer = new byte[4096];
                        int    bytesRead  = -1;

                        //Store image
                        while ((bytesRead = e.ImageStream.Read(readBuffer, 0, readBuffer.Length)) > 0)
                        {
                            targetStream.Write(readBuffer, 0, bytesRead);
                        }
                    }
                }

                //Write message to UI
                Deployment.Current.Dispatcher.BeginInvoke(delegate()
                {
                    txtDebug.Text = "Picture taken";
                });
            }
            finally
            {
                //Close image stream
                e.ImageStream.Close();
            }
        }
Exemple #18
0
        private void Save_Click(object sender, EventArgs e)
        {
            IsolatedStorageFileStream fileStream = storage.OpenFile(imageName, FileMode.Open, FileAccess.Read);
            MediaLibrary mediaLibrary            = new MediaLibrary();
            Picture      pic = mediaLibrary.SavePictureToCameraRoll(imageName, fileStream);

            fileStream.Dispose();
            mediaLibrary.Dispose();
            pic.Dispose();
            storage.DeleteFile(imageName.Remove(imageName.IndexOf(".")) + "_jpg.jpg");
            storage.DeleteFile(imageName.Remove(imageName.IndexOf(".")) + "_png.jpg");
            MessageBox.Show("Image Saved to Camera Roll!");
        }
Exemple #19
0
        private void SaveButton_Click(object sender, EventArgs e)
        {
            WriteableBitmap wb = new WriteableBitmap(mapControl, null);

            wb.Render(mapControl, null);
            MemoryStream memoryStream = new MemoryStream();

            wb.SaveJpeg(memoryStream, wb.PixelWidth, wb.PixelHeight, 0, 80);

            MediaLibrary library = new MediaLibrary();

            library.SavePictureToCameraRoll("SavedMap_" + DateTime.Now.ToString() + ".jpg", memoryStream.GetBuffer());
        }
Exemple #20
0
        private async void Save_Clicked(object sender, RoutedEventArgs e)
        {
            using (MemoryStream stream = new MemoryStream())
            {
                WriteableBitmap bitmap = new WriteableBitmap(3552, 2448);
                await session.RenderToWriteableBitmapAsync(bitmap);

                bitmap.SaveJpeg(stream, bitmap.PixelWidth, bitmap.PixelHeight, 0, 100);
                stream.Seek(0, SeekOrigin.Begin);
                using (MediaLibrary mediaLibrary = new MediaLibrary())
                    mediaLibrary.SavePictureToCameraRoll("Picture.jpg", stream);
                MessageBox.Show("Image saved!");
            }
        }
Exemple #21
0
        void cameraCaptureTask_Completed(object sender, PhotoResult e)
        {
            if (e.TaskResult == TaskResult.OK)
            {
                var library = new MediaLibrary();

                // Create the file name.
                var fileName = Path.GetFileName(e.OriginalFileName);
                fileName = new TimeSpan(DateTime.Now.Ticks - DateTime.MinValue.Ticks).TotalMilliseconds + fileName;

                library.SavePictureToCameraRoll(e.OriginalFileName, e.ChosenPhoto);

                App.ViewModel.AddAttachment(e.ChosenPhoto, fileName, RayzItAttachment.ContentType.Image);
            }
        }
        void cam_CaptureImageAvailable(object sender, Microsoft.Devices.ContentReadyEventArgs e)
        {
            photoCounter++;
            string fileName = photoCounter + ".jpg";

            Deployment.Current.Dispatcher.BeginInvoke(delegate()
            {
                txtMessage.Text = "Captured image available, saving picture.";
            });
            library.SavePictureToCameraRoll(fileName, e.ImageStream);
            Deployment.Current.Dispatcher.BeginInvoke(delegate()
            {
                txtMessage.Text = "Picture has been saved to camera roll.";
            });
        }
        // Helper for CameraOnCaptureImageAvailable
        private void SaveCapturedImage(WriteableBitmap imageToSave)
        {
            var stream = new MemoryStream();

            imageToSave.SaveJpeg(stream, imageToSave.PixelWidth, imageToSave.PixelHeight, 0, 100);

            //Take the stream back to its beginning because it will be read again
            //when saving to the library
            stream.Position = 0;

            var    library  = new MediaLibrary();
            string fileName = string.Format("{0:yyyy-MM-dd-HH-mm-ss}.jpg", DateTime.Now);

            library.SavePictureToCameraRoll(fileName, stream);
        }
Exemple #24
0
 private async void saveBtn_Click(object sender, RoutedEventArgs e)
 {
     if (m_selectedFile != null)
     {
         var res = MessageBox.Show("Save photo to the Camera roll?", "Confirm save", MessageBoxButton.OKCancel);
         if (res == MessageBoxResult.OK)
         {
             var ml = new MediaLibrary();
             using (var stream = await m_selectedFile.OpenStreamForReadAsync())
             {
                 ml.SavePictureToCameraRoll(m_selectedFile.Name, stream);
                 stream.Close();
             }
         }
     }
 }
Exemple #25
0
        /// <summary>
        /// Clicking on the save button saves the photo in MainPage.ImageStream
        /// to media library camera roll. Once image has been saved, the
        /// application will navigate back to the main page.
        /// </summary>
        private async void SaveButton_Click(object sender, EventArgs e)
        {
            _progressIndicator.Text      = AppResources.SavingText;
            _progressIndicator.IsVisible = true;
            SystemTray.SetProgressIndicator(this, _progressIndicator);
            int selectedIndex = FilterPreviewPivot.SelectedIndex;

            DataContext dataContext = FilterEffects.DataContext.Instance;

            GC.Collect();

            try
            {
                if (selectedIndex == 0)
                {
                    using (MediaLibrary library = new MediaLibrary())
                    {
                        dataContext.FullResolutionStream.Position = 0;
                        library.SavePictureToCameraRoll(FileNamePrefix
                                                        + DateTime.Now.ToString() + ".jpg",
                                                        dataContext.FullResolutionStream);
                    }
                }
                else
                {
                    AbstractFilter filter = _filters[selectedIndex];

                    IBuffer buffer = await filter.RenderJpegAsync(
                        dataContext.FullResolutionStream.GetWindowsRuntimeBuffer());

                    using (MediaLibrary library = new MediaLibrary())
                    {
                        library.SavePictureToCameraRoll(FileNamePrefix
                                                        + DateTime.Now.ToString() + ".jpg", buffer.AsStream());
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed to save the image: " + ex.ToString());
            }

            _progressIndicator.IsVisible = false;
            SystemTray.SetProgressIndicator(this, _progressIndicator);

            NavigationService.GoBack();
        }
Exemple #26
0
        void saveImageWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            var entry = e.Argument as Entry;

            using (var iso = IsolatedStorageFile.GetUserStoreForApplication())
            {
                if (iso.FileExists(entry.ImgSrc))
                {
                    var stream = iso.OpenFile(entry.ImgSrc, FileMode.Open, FileAccess.Read);
                    using (MediaLibrary library = new MediaLibrary())
                    {
                        library.SavePictureToCameraRoll(entry.ImgSrc, stream);
                    }
                    stream.Close();
                }
            }
        }
Exemple #27
0
        private void client_AuthenticateCompleted(object sender, RequestCompletedEventArgs e)
        {
            // unregister previous event handler
            App.MetrocamService.AuthenticateCompleted -= client_AuthenticateCompleted;

            WriteableBitmap bitmap = new WriteableBitmap((BitmapSource)EditPicture.editedPicture.Source);

            var width  = bitmap.PixelWidth * 2;
            var height = bitmap.PixelHeight * 2;

            //var resultPixels = effect.Process(bitmap.Pixels, width, height);

            ms = new MemoryStream();
            bitmap.SaveJpeg(ms, width, height, 0, 100);
            ms.Seek(0, SeekOrigin.Begin);

            /******
             *
             *  save original photo to phone
             *
             */
            long   timestamp        = DateTime.Now.ToFileTime();
            String originalFilename = "MetrocamOriginal_" + timestamp.ToString() + ".jpg";

            var myStore = IsolatedStorageFile.GetUserStoreForApplication();

            var lib = new MediaLibrary();

            if (Settings.saveOriginal.Value && MainPage.tookPhoto)
            {
                IsolatedStorageFileStream myFileStream = myStore.CreateFile(originalFilename);
                WriteableBitmap           w            = new WriteableBitmap((BitmapSource)MainPage.bmp);
                w.SaveJpeg(myFileStream, w.PixelWidth, w.PixelHeight, 0, 100);
                myFileStream.Close();

                myFileStream = myStore.OpenFile(originalFilename, System.IO.FileMode.Open, System.IO.FileAccess.Read);
                lib.SavePictureToCameraRoll(originalFilename, myFileStream);
            }


            // upload the image
            App.MetrocamService.UploadPictureCompleted += new RequestCompletedEventHandler(client_UploadPictureCompleted);
            App.MetrocamService.UploadPicture(ms);
        }
Exemple #28
0
        void cam_CaptureImageAvailable(object sender, Microsoft.Devices.ContentReadyEventArgs e)
        {
            Deployment.Current.Dispatcher.BeginInvoke(delegate()
            {
                BitmapImage bi = new BitmapImage();
                bi.SetSource(e.ImageStream);
                WriteableBitmap wb = new WriteableBitmap(bi);

                uint filter = 0xFFC29670;
                byte fR     = (byte)((filter & 0x00FF0000) >> 16);
                byte fG     = (byte)((filter & 0x0000FF00) >> 8);
                byte fB     = (byte)(filter & 0x000000FF);
                for (int pixel = 0; pixel < wb.Pixels.Length; pixel++)
                {
                    int color        = wb.Pixels[pixel];
                    byte A           = (byte)((color & 0xFF000000) >> 24);
                    byte R           = (byte)((color & 0x00FF0000) >> 16);
                    R                = (R > fR) ? fR : R;
                    byte G           = (byte)((color & 0x0000FF00) >> 8);
                    G                = (G > fG) ? fG : G;
                    byte B           = (byte)(color & 0x000000FF);
                    B                = (B > fB) ? fB : B;
                    color            = (A << 24) | (R << 16) | (G << 8) | B;
                    wb.Pixels[pixel] = color;
                }

                String tempJPEG = "TempJPEG";
                var store       = IsolatedStorageFile.GetUserStoreForApplication();
                if (store.FileExists(tempJPEG))
                {
                    store.DeleteFile(tempJPEG);
                }
                IsolatedStorageFileStream stream = store.CreateFile(tempJPEG);
                Extensions.SaveJpeg(wb, stream, wb.PixelWidth, wb.PixelHeight, 0, 85);
                stream.Close();

                string fileName = String.Format("sepia_%s.jpg", new DateTime().ToString("yyyyMMddhhmmss"));
                stream          = store.OpenFile(tempJPEG, FileMode.Open, FileAccess.Read);
                library.SavePictureToCameraRoll(fileName, stream);
                stream.Close();

                showNotice("Picture has been saved to camera roll.");
            });
        }
        private async Task <string> SaveToCameraRoll(Stream cameraImage, string filenameBase)
        {
            string                  filename            = filenameBase + ".jpg";
            StorageFolder           storageFolder       = KnownFolders.CameraRoll;
            AutoResizeConfiguration resizeConfiguration = null;
            var buffer = StreamToBuffer(cameraImage);

            // Store low resolution image
            using (var source = new BufferImageSource(buffer))
            {
                var info = await source.GetInfoAsync();

                if (info.ImageSize.Width * info.ImageSize.Height > LibraryMaxArea)
                {
                    var compactedSize = CalculateSize(info.ImageSize, LibraryMaxSize, LibraryMaxArea);
                    resizeConfiguration = new AutoResizeConfiguration(LibraryMaxBytes, compactedSize,
                                                                      new Size(0, 0), AutoResizeMode.Automatic, 0, ColorSpace.Yuv420);
                    buffer = await Nokia.Graphics.Imaging.JpegTools.AutoResizeAsync(buffer, resizeConfiguration);
                }

                using (var library = new MediaLibrary())
                {
                    library.SavePictureToCameraRoll(filename, buffer.AsStream());
                }
            }

            // Store high resolution image
            if (resizeConfiguration != null)
            {
                filename             = filenameBase + HIGH_RESOLUTION_PHOTO_SUFFIX + @".jpg";
                cameraImage.Position = 0;

                using (var stream = await storageFolder.OpenStreamForWriteAsync(filename, CreationCollisionOption.GenerateUniqueName))
                {
                    await cameraImage.CopyToAsync(stream);
                }
            }
            _saved = true;

            return(storageFolder.Path + "\\" + filename);
        }
Exemple #30
0
        // Informs when full resolution picture has been taken, saves to local media library and isolated storage.
        void cam_CaptureImageAvailable(object sender, Microsoft.Devices.ContentReadyEventArgs e)
        {
            string fileName = String.Format("Ajapaik_{0:yyyy-MM-dd_hh-mm-ss-tt}.jpg",
                                            DateTime.Now);

            try
            {
                // Save picture to the library camera roll.
                library.SavePictureToCameraRoll(fileName, e.ImageStream);

                // Set the position of the stream back to start
                e.ImageStream.Seek(0, SeekOrigin.Begin);

                // Save picture as JPEG to isolated storage.
                App.Settings.PhotoByUser = new MemoryStream();
                var targetStream = App.Settings.PhotoByUser;
                // Initialize the buffer for 4KB disk pages.
                byte[] readBuffer = new byte[4096];
                int    bytesRead  = -1;

                // Copy the image to isolated storage.
                while ((bytesRead = e.ImageStream.Read(readBuffer, 0, readBuffer.Length)) > 0)
                {
                    targetStream.Write(readBuffer, 0, bytesRead);
                }

                this.Dispatcher.BeginInvoke(delegate()
                {
                    // Write message.
                    //txtDebug.Text = "Camera initialized.";
                    //isCameraInitialized = true;
                    NavigationService.Navigate(new Uri("/Views/AcceptPhotoView.xaml", UriKind.Relative));
                });
            }
            finally
            {
                // Close image stream
                e.ImageStream.Close();
            }
        }
        private async void CapturePhoto()
        {
            try
            {
                CameraCaptureSequence sequence = captureDevice.CreateCaptureSequence(1);
                captureDevice.SetProperty(KnownCameraGeneralProperties.AutoFocusRange, AutoFocusRange.Infinity);
                captureDevice.SetProperty(KnownCameraGeneralProperties.PlayShutterSoundOnCapture, true);
                //captureDevice.SetProperty(KnownCameraPhotoProperties.FlashMode, FlashState.On);

                MemoryStream captureStream1 = new MemoryStream();
                sequence.Frames[0].CaptureStream = captureStream1.AsOutputStream();

                await captureDevice.PrepareCaptureSequenceAsync(sequence);

                await sequence.StartCaptureAsync();

                captureStream1.Seek(0, SeekOrigin.Begin);

                MediaLibrary library  = new MediaLibrary();
                string       filename = "IMG_" + saveCounter;
                Picture      pic1     = library.SavePictureToCameraRoll(filename, captureStream1); //Save picture in cameraroll

                //Update Background Cameraroll Button
                BitmapImage bitImage = new BitmapImage();
                bitImage.SetSource(pic1.GetThumbnail());
                ImageBrush imgButton = new ImageBrush();
                imgButton.ImageSource       = bitImage;
                CameraRollButton.Background = imgButton;

                saveCounter++;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }