示例#1
0
        void saveFrame()
        {
            string path = "F:\\file.jpg";
            double
                x1 = mainFrame.Margin.Left,
                x2 = mainFrame.Margin.Top,
                x3 = mainFrame.Margin.Right,
                x4 = mainFrame.Margin.Bottom;

            if (path == null)
            {
                return;
            }

            mainFrame.Margin = new Thickness(0, 0, 0, 0);

            Size size = new Size(mainFrame.Width, mainFrame.Height);

            mainFrame.Measure(size);
            mainFrame.Arrange(new Rect(size));

            RenderTargetBitmap renderBitmap =
                new RenderTargetBitmap(
                    (int)size.Width,
                    (int)size.Height,
                    96,
                    96,
                    PixelFormats.Default);

            renderBitmap.Render(mainFrame);
            using (FileStream fs = File.Open(path, FileMode.Create))
            {
                JpegBitmapEncoder encoder = new JpegBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                encoder.Save(fs);
            }
            mainFrame.Margin = new Thickness(x1, x2, x3, x4);
        }
示例#2
0
        public static void SnapShot(IntPtr sourcePtr, int pitch, int width, int height, string format)
        {
            var sync = new AutoResetEvent(false);

            Task.Factory.StartNew(() =>
            {
                var source = BitmapSource.Create(width, height, 72, 72, PixelFormats.Bgr32, null,
                                                 sourcePtr, pitch * height, pitch);
                sync.Set();
                BitmapEncoder encoder;
                var encoderType = PresentationCore.GetType(
                    $"System.Windows.Media.Imaging.{format}BitmapEncoder"
                    , false, true);
                if (encoderType == null)
                {
                    encoder = new JpegBitmapEncoder();
                }
                else
                {
                    encoder = Activator.CreateInstance(encoderType) as BitmapEncoder;
                    if (encoder == null)
                    {
                        return;
                    }
                }
                var frame = BitmapFrame.Create(source);
                encoder.Frames.Add(frame);
                using (
                    var file =
                        File.Create(FileHelper.SavePath + "Snapshot " + DateTime.Now.ToString("yyyyMMddTHHmmss.") +
                                    format?.ToLower()))
                {
                    encoder.Save(file);
                    file.Close();
                }
            });
            sync.WaitOne();
        }
示例#3
0
        /// <summary>
        /// 拍照识别
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnPlay_Click(object sender, RoutedEventArgs e)
        {
            //抓取控件做成图片
            RenderTargetBitmap bmp = new RenderTargetBitmap((int)VideoCapture.NaturalVideoWidth, (int)VideoCapture.NaturalVideoHeight, 96, 96, PixelFormats.Default);

            //VideoCapture.Stretch = Stretch.Fill;
            VideoCapture.Measure(VideoCapture.RenderSize);
            VideoCapture.Arrange(new Rect(VideoCapture.RenderSize));
            bmp.Render(VideoCapture);
            BitmapEncoder encoder = new JpegBitmapEncoder();

            encoder.Frames.Add(BitmapFrame.Create(bmp));
            BarCodeScan scan = new BarCodeScan();

            using (MemoryStream ms = new MemoryStream())
            {
                encoder.Save(ms);
                Response <string> result = scan.GetBarCode(ms);
                if (!result.Success)
                {
                    MessageBox.Show(result.Errors, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    VideoCapture.Play();
                }
                else
                {
                    BarCode = result.Data;
                    if (string.IsNullOrEmpty(BarCode))
                    {
                        MessageBox.Show("No valid barcode was obtained,Please Retry", "Notice", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        VideoCapture.Pause();
                        Close();
                    }
                }
            }
        }
示例#4
0
        public void SaveImage(String fileName, Int32 format)
        {
            using (var fileStream = new FileStream(fileName, FileMode.Create))
            {
                using (var memoryStream = new MemoryStream(this.ImageData))
                {
                    BitmapEncoder encoder;
                    switch (format)
                    {
                    case 1:
                        encoder = new BmpBitmapEncoder();
                        break;

                    case 2:
                        encoder = new GifBitmapEncoder();
                        break;

                    case 3:
                        encoder = new JpegBitmapEncoder();
                        break;

                    case 4:
                        encoder = new PngBitmapEncoder();
                        break;

                    case 5:
                        encoder = new TiffBitmapEncoder();
                        break;

                    default:
                        throw new ArgumentException("Unsupported image format");
                    }

                    encoder.Frames.Add(BitmapFrame.Create(memoryStream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad));
                    encoder.Save(fileStream);
                }
            }
        }
示例#5
0
        /// <summary>
        /// Exports the specified viewport.
        /// </summary>
        /// <param name="viewport">
        /// The viewport.
        /// </param>
        public void Export(Viewport3D viewport)
        {
            int m = this.OversamplingMultiplier;

            var background = this.Background;

            if (background == null)
            {
                background = Brushes.Transparent;
            }

            var           bmp = Viewport3DHelper.RenderBitmap(viewport, background, m);
            BitmapEncoder encoder;
            string        ext = Path.GetExtension(this.FileName);

            switch (ext.ToLower())
            {
            case ".jpg":
                var jpg = new JpegBitmapEncoder();
                jpg.Frames.Add(BitmapFrame.Create(bmp));
                encoder = jpg;
                break;

            case ".png":
                var png = new PngBitmapEncoder();
                png.Frames.Add(BitmapFrame.Create(bmp));
                encoder = png;
                break;

            default:
                throw new InvalidOperationException("Not supported file format.");
            }

            using (Stream stm = File.Create(this.FileName))
            {
                encoder.Save(stm);
            }
        }
        private static void MainCamera_LiveViewUpdated(Camera sender, Stream img)
        {
            LiveViewUpdates++;

            if (LiveViewUpdates == 1 || LiveViewUpdates % 100 == 0)
            {
                // Log only every 100 updates
                LogMessage($"Live view updated #{LiveViewUpdates}");
            }

            try
            {
                using (WrapStream s = new WrapStream(img))
                {
                    img.Position = 0;
                    BitmapImage EvfImage = new BitmapImage();
                    EvfImage.BeginInit();
                    EvfImage.StreamSource = s;
                    EvfImage.CacheOption  = BitmapCacheOption.OnLoad;
                    EvfImage.EndInit();
                    EvfImage.Freeze();

                    JpegBitmapEncoder encoder = new JpegBitmapEncoder();
                    encoder.Frames.Add(BitmapFrame.Create((BitmapImage)EvfImage));
                    TempPreviewBuffer = new MemoryStream();
                    encoder.Save(TempPreviewBuffer);
                    PreviewBuffer = TempPreviewBuffer;
                }
            }
            catch (Exception ex)
            {
                HandleException(ex);
            }
            finally
            {
                LiveViewWaiter.Set();
            }
        }
        private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            SaveFileDialog dlg = new SaveFileDialog();

            dlg.DefaultExt = ".jpg";
            dlg.Filter     = "JPEG|.jpg";
            if (dlg.ShowDialog().Value)
            {
                string filename = dlg.FileName;


                int resolutionX = 96;
                int resolutionY = 96;
                try
                {
                    WindowInteropHelper     wih     = new WindowInteropHelper(Application.Current.MainWindow);
                    System.Drawing.Graphics desktop = System.Drawing.Graphics.FromHwnd(wih.Handle);
                    resolutionX = (int)desktop.DpiX;
                    resolutionY = (int)desktop.DpiY;
                }
                finally
                { }

                //use RenderTargetBitmap
                RenderTargetBitmap rtb = new RenderTargetBitmap(
                    (int)ParentPlaceHolder.ActualWidth,
                    (int)ParentPlaceHolder.ActualHeight,
                    resolutionX, resolutionY, PixelFormats.Pbgra32);
                rtb.Render(ParentPlaceHolder);

                FileStream fs = new FileStream(filename, FileMode.Create);
                // BmpBitmapEncoder encoder = new BmpBitmapEncoder();
                JpegBitmapEncoder encoder = new JpegBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create(rtb));
                encoder.Save(fs);
                fs.Close();
            }
        }
        /// <summary>
        ///
        /// </summary>
        public String SaveNewImage(BitmapImage image)
        {
            try
            {
                JpegBitmapEncoder encoder = new JpegBitmapEncoder();

                //// If this is a new relationship that is being added, the SelectedRelationship first and last
                //// names will be null.
                //// Calculate the relationshipID to be 1 more than the current SelectedProperty's
                //// relationship collection count.  Otherwise, we assume they are updating/replacing
                //// the current image and therefore we use the existing relationshipID
                int relationID = 0;
                if (String.IsNullOrEmpty(this.SelectedRelation.FName) && String.IsNullOrEmpty(this.SelectedRelation.LName))
                {
                    relationID = this.SelectedProperty.Relationships.Count() + 1;
                }
                else
                {
                    relationID = this.SelectedRelation.RelationshipID;
                }

                String photoURI = baseURI + this.SelectedProperty.Section.ToString() + "-" +
                                  this.SelectedProperty.Block.ToString() + "-" +
                                  this.SelectedProperty.Lot.ToString() + "-" +
                                  this.SelectedProperty.SubLot.ToString() + "-" +
                                  relationID + ".jpg";

                encoder.Frames.Add(BitmapFrame.Create(image));

                using (var filestream = new FileStream(photoURI, FileMode.Create))
                    encoder.Save(filestream);
                return(photoURI);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
示例#9
0
        private void btn_save_foto_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (photo.Source != null)
                {
                    Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
                    dlg.FileName   = "newFlowerPhoto";          // Default file name
                    dlg.DefaultExt = ".jpg";                    // Default file extension
                    dlg.Filter     = "JPG Files (*.jpg)|*.jpg"; // Filter files by extension

                    // Show save file dialog box
                    Nullable <bool> result = dlg.ShowDialog();

                    // Process save file dialog box results
                    if (result == true)
                    {
                        // Save document
                        string filename = dlg.FileName;

                        JpegBitmapEncoder jpegBitmapEncoder = new JpegBitmapEncoder();
                        jpegBitmapEncoder.Frames.Add(BitmapFrame.Create(photo.Source as BitmapSource));
                        using (FileStream fileStream = new FileStream(filename, FileMode.Create))
                            jpegBitmapEncoder.Save(fileStream);

                        new MsgBox("Фото сохранено!", "Информация").ShowDialog();
                    }
                }
                else
                {
                    throw new Exception("Нечего сохранять!");
                }
            }
            catch (Exception ex)
            {
                new MsgBox(ex.Message, "Ошибка").ShowDialog();
            }
        }
示例#10
0
        //----------------------------------------------------------
        public string CreatePreview(ElementType type, All_Data myAll_Data)
        {
            string path = "";

            try
            {
                mySource = new ListSource();
                if (Directory.Exists(mySource.user + myAll_Data.list_path_foder_data[1]) == false)
                {
                    Directory.CreateDirectory(mySource.user + myAll_Data.list_path_foder_data[1]);
                }

                Size imgSize = new Size(200, 200);

                Bitmap image = type.GetPreviewImage(imgSize);

                // encode image to jpeg for test display purposes:

                JpegBitmapEncoder encoder
                    = new JpegBitmapEncoder();

                encoder.Frames.Add(BitmapFrame.Create(
                                       ConvertBitmapToBitmapSource(image)));

                encoder.QualityLevel = 25;

                path = mySource.user + myAll_Data.list_path_foder_data[1] + "\\" + type.FamilyName + ".jpg";

                FileStream file = new FileStream(path, FileMode.Create, FileAccess.Write);

                encoder.Save(file);
                file.Close();
            }
            catch (Exception ex)
            {
            }
            return(path);
        }
示例#11
0
        public static byte[] GetFrame(this UIElement source, double scale, int quality)
        {
            double actualHeight = source.RenderSize.Height;
            double actualWidth  = source.RenderSize.Width;
            double renderHeight = actualHeight * scale;
            double renderWidth  = actualWidth * scale;

            Size dpi = new Size(96, 96);
            RenderTargetBitmap renderTarget = new RenderTargetBitmap((int)renderWidth,
                                                                     (int)renderHeight, dpi.Width, dpi.Height, PixelFormats.Pbgra32);
            VisualBrush sourceBrush = new VisualBrush(source);

            DrawingVisual  drawingVisual  = new DrawingVisual();
            DrawingContext drawingContext = drawingVisual.RenderOpen();

            using (drawingContext)
            {
                drawingContext.PushTransform(new ScaleTransform(scale, scale));
                drawingContext.DrawRectangle(sourceBrush, null,
                                             new Rect(new Point(), new Point(actualWidth, actualHeight)));
            }
            renderTarget.Render(drawingVisual);

            JpegBitmapEncoder jpgEnconder = new JpegBitmapEncoder();

            jpgEnconder.QualityLevel = quality;
            jpgEnconder.Frames.Add(BitmapFrame.Create(renderTarget));

            Byte[] imageArray;

            using (MemoryStream outputStream = new MemoryStream())
            {
                jpgEnconder.Save(outputStream);
                imageArray = outputStream.ToArray();
            }

            return(imageArray);
        }
示例#12
0
        public void Write(string outputFileName, string inputFolder, string outputFolder, List <byte[]> imageBytes, List <string> imageNames, ContractParameters settings, ProgressDelegate progress)
        {
            if (LogHelper.CanDebug())
            {
                LogHelper.Begin("ImageFileWriter.Write");
            }
            try
            {
                for (int i = 0; i < imageBytes.Count; ++i)
                {
                    using (MemoryStream ms = new MemoryStream(imageBytes[i]))
                    {
                        BitmapImage myImage = new BitmapImage();
                        myImage.BeginInit();
                        myImage.StreamSource = ms;
                        myImage.EndInit();

                        using (FileStream fs = new FileStream(Path.Combine(outputFolder, outputFileName + "_" + imageNames[i]), FileMode.Create))
                        {
                            JpegBitmapEncoder encoder = new JpegBitmapEncoder();
                            encoder.Frames.Add(BitmapFrame.Create(myImage));
                            encoder.Save(fs);
                        }
                    }
                }
                string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageSaved", "{0} images saved...");
                progress(string.Format(msg, imageBytes.Count));
            }
            catch (Exception err)
            {
                LogHelper.Manage("ImageFileWriter:Write", err);
                settings.Result = false;
            }
            finally
            {
                LogHelper.End("ImageFileWriter.Write");
            }
        }
示例#13
0
        /// <summary>
        /// Upload the frame and get the face detect result
        /// </summary>
        private async Task <FaceRectangle[]> UploadAndDetectFaces()
        {
            if (this.infraredBitmap == null)
            {
                return(new FaceRectangle[0]);
            }

            BitmapEncoder faceDetectEncoder = new JpegBitmapEncoder();

            // create frame from the writable bitmap and add to encoder
            faceDetectEncoder.Frames.Add(BitmapFrame.Create(this.infraredBitmap));

            MemoryStream imageFileStream = new MemoryStream();

            faceDetectEncoder.Save(imageFileStream);
            imageFileStream.Position = 0;

            if (!faceProcessing)
            {
                faceProcessing = true;
                //Thread.Sleep(300);
                try
                {
                    var faces = await _faceServiceClient.DetectAsync(imageFileStream);

                    var faceRects = faces.Select(face => face.FaceRectangle);

                    faceProcessing = false;
                    return(faceRects.ToArray());
                }
                catch (Exception)
                {
                    faceProcessing = false;
                    return(new FaceRectangle[0]);
                }
            }
            return(new FaceRectangle[0]);
        }
示例#14
0
        public void Transform(string file, string subfolder)
        {
            CheckInput(file);
            if (Directory.Exists(file)) // do loop if this is a folder
            {
                var files = Directory.GetFiles(file);
                Transform(files, subfolder);
            }   // todo: provide recursion

            if (CallBack != null)
            {
                CallBack(this, new MyEventArgs(file));
            }

            string path = Path.GetDirectoryName(file);

            if (subfolder != null)
            {
                path = CheckFolder(Path.Combine(path, subfolder));
            }

            var bmpDec = BitmapDecoder.Create(new Uri(file), BitmapCreateOptions.DelayCreation, BitmapCacheOption.None);
            var bmpEnc = new JpegBitmapEncoder();

            bmpEnc.QualityLevel = 100;
            bmpEnc.Frames.Add(bmpDec.Frames[0]);
            var oldfn = Path.GetFileName(file);
            var newfn = Path.ChangeExtension(oldfn, "JPG");

            using (var ms = File.Create(Path.Combine(path, newfn), 10000000))
            {
                bmpEnc.Save(ms);
                if (CallBack != null)
                {
                    CallBack(this, new MyEventArgs(path + "\\" + newfn));
                }
            }
        }
示例#15
0
        public static void PanelToImage(FrameworkElement panel, string filename, ImageFormats format)
        {
            int width  = (int)panel.ActualWidth;
            int height = (int)panel.ActualHeight;

            var    pSource = PresentationSource.FromVisual(Application.Current.MainWindow);
            Matrix m       = pSource.CompositionTarget.TransformToDevice;
            double dpiX    = m.M11 * 96;
            double dpiY    = m.M22 * 96;

            RenderTargetBitmap renderBitmap = new RenderTargetBitmap(width, height, dpiX, dpiY, PixelFormats.Default);

            //var crop = new CroppedBitmap(renderBitmap, new Int32Rect(50, 50, 250, 250));
            // needed otherwise the image output is black
            //this.Canvas.Measure(new Size(width, height));
            //this.Canvas.Arrange(new Rect(new Size(width, height)));

            renderBitmap.Render(panel);
            BitmapEncoder encoder;

            if (format == ImageFormats.JPEG)
            {
                encoder = new JpegBitmapEncoder();
            }
            else
            {
                encoder = new PngBitmapEncoder();
            }

            encoder.Frames.Add(BitmapFrame.Create(renderBitmap));

            using (FileStream file = File.Create(filename))
            {
                encoder.Save(file);
                file.Flush();
                file.Close();
            }
        }
示例#16
0
        private void ThreadSendImageSetup()
        {
            sendImage = new Thread(() => {
                TcpListener server = new TcpListener(IPAddress.Parse("0.0.0.0"), 12000);
                server.Start();
                byte[] data;
                byte[] tmp = new byte[1024];

                byte[] intBytes;
                while (true)
                {
                    var acceptSocket = server.AcceptTcpClient();

                    var Uri = new Uri(Malnati_PDS.Properties.Settings.Default.Profile_Image, UriKind.Absolute);

                    JpegBitmapEncoder encoder = new JpegBitmapEncoder();
                    encoder.Frames.Add(BitmapFrame.Create(getBitmap(Uri)));


                    using (MemoryStream ms = new MemoryStream())
                    {
                        encoder.Save(ms);

                        data = ms.ToArray();
                    }
                    intBytes         = BitConverter.GetBytes(data.Length);
                    NetworkStream ns = acceptSocket.GetStream();
                    try
                    {
                        MemoryStream ms = new MemoryStream(data);
                        ms.CopyTo(ns);
                    }
                    catch (Exception)
                    { }
                    acceptSocket.Close();
                }
            });
        }
        public static byte[] LoadImage(string strAbsolutePath)
        {
            Byte[] arBuffer = null;

            try
            {
                string        strFileExtension = Path.GetExtension(strAbsolutePath);
                BitmapEncoder ImgEncoder       = null;

                switch (strFileExtension)
                {
                case ".jpg":
                case ".jpeg":   { ImgEncoder = new JpegBitmapEncoder(); break; }

                case ".png":    { ImgEncoder = new PngBitmapEncoder(); break; }

                case ".gif":    { ImgEncoder = new GifBitmapEncoder(); break; }

                default: return(null);
                }

                Uri         AbsoluteUri = new Uri(strAbsolutePath, UriKind.Absolute);
                BitmapImage BitmapImg   = new BitmapImage(AbsoluteUri);
                ImgEncoder.Frames.Add(BitmapFrame.Create(BitmapImg));

                using (MemoryStream ms = new MemoryStream())
                {
                    ImgEncoder.Save(ms);
                    arBuffer = ms.ToArray();
                }
            }
            catch (Exception UnExpectedException)
            {
                throw UnExpectedException;
            }

            return(arBuffer);
        }
示例#18
0
        public static void ExportToFile(BitmapSource graphBitmap)
        {
            SaveFileDialog saveDialog      = new SaveFileDialog();
            const int      FilterIndexJpeg = 1;
            const int      FilterIndexPng  = 2;

            saveDialog.Filter       = "JPEG|*.jpg|PNG|*.png";
            saveDialog.Title        = "Save Graph As";
            saveDialog.AddExtension = true;
            saveDialog.ShowDialog();

            if (string.IsNullOrEmpty(saveDialog.FileName))
            {
                return;
            }

            using (FileStream fileStream = (FileStream)saveDialog.OpenFile())
            {
                BitmapEncoder bitmapEncoder;

                switch (saveDialog.FilterIndex)
                {
                case FilterIndexJpeg:
                    bitmapEncoder = new JpegBitmapEncoder();
                    break;

                case FilterIndexPng:
                    bitmapEncoder = new PngBitmapEncoder();
                    break;

                default:
                    throw new ArgumentException("Invalid file save type");
                }

                bitmapEncoder.Frames.Add(BitmapFrame.Create(graphBitmap));
                bitmapEncoder.Save(fileStream);
            }
        }
示例#19
0
        private void SendVideo()
        {
            VisualBrush    vb             = new VisualBrush(MyVideoCapElement);
            DrawingVisual  drawingVisual  = new DrawingVisual();
            DrawingContext drawingContext = drawingVisual.RenderOpen();

            using (drawingContext)
            {
                drawingContext.DrawRectangle(vb, null, new Rect(0, 0, 318, 238));
            }

            double dpiX = 200;
            double dpiY = 200;

            RenderTargetBitmap bmp = new RenderTargetBitmap((int)(318 * dpiX / 96), (int)(238 * dpiY / 96), dpiX, dpiY, PixelFormats.Pbgra32);

            bmp.Render(drawingVisual);

            JpegBitmapEncoder encoder = new JpegBitmapEncoder();

            encoder.Frames.Add(BitmapFrame.Create(bmp));
            encoder.QualityLevel = 50;

            byte[] bit = new byte[0];

            using (MemoryStream stream = new MemoryStream())
            {
                encoder.Save(stream);
                bit = stream.ToArray();
                stream.Close();

                VideoInfo videoInfo = new VideoInfo();
                videoInfo.UserId = Main._UserInfo.Id;
                videoInfo.Data   = bit;

                Main._VideoEngine.Send(NotifyType.Request_VideoChat, videoInfo);
            }
        }
示例#20
0
        private void Save_Click(object sender, RoutedEventArgs e)
        {
            //影像檔一系統時間命名
            string fileName = "C" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".jpg";

            using (FileStream saveImage = new FileStream(fileName, FileMode.CreateNew))
            {
                //從ColorImage.Source處取出一張影像,轉為BitmapSource格式
                //儲存到imageSource
                BitmapSource imageSource = (BitmapSource)FaceImage.Source;
                //挑選Joint Photographic Experts Group(JPEG)影像編碼器
                JpegBitmapEncoder encoder = new JpegBitmapEncoder();
                //將取出的影像加到編碼器的影像集
                encoder.Frames.Add(BitmapFrame.Create(imageSource));
                //儲存影像與後續影像清除工作
                encoder.Save(saveImage);
                saveImage.Flush();
                saveImage.Close();
                saveImage.Dispose();
            }
            //顯示訊息
            Result.Text = "儲存影像檔案" + fileName;
        }
示例#21
0
        /// <summary>
        /// 处理剪切板图片类型
        /// </summary>
        /// <param name="clip"></param>
        public void HandleImage(ClipModel clip)
        {
            string[] files = (string[])Clipboard.GetData(DataFormats.FileDrop);
            string   base64;

            if (files != null && files.Length > 0 && File.Exists(files[0]))
            {
                base64            = Convert.ToBase64String(File.ReadAllBytes(files[0]));
                clip.DisplayValue = files[0];
            }
            else
            {
                BitmapSource      bs          = Clipboard.GetImage();
                JpegBitmapEncoder jpegEncoder = new JpegBitmapEncoder();
                jpegEncoder.Frames.Add(BitmapFrame.Create(bs));
                MemoryStream ms = new MemoryStream();
                jpegEncoder.Save(ms);
                base64 = Convert.ToBase64String(ms.GetBuffer());
            }
            clip.Type         = IMAGE_TYPE;
            clip.DisplayValue = "image.jpg";
            clip.ClipValue    = base64;
        }
示例#22
0
        //public static void SaveDrawingToFile(Drawing drawing, string fileName, double scale)
        //{
        //    var drawingImage = new Image { Source = new DrawingImage(drawing) };
        //    var width = drawing.Bounds.Width * scale;
        //    var height = drawing.Bounds.Height * scale;
        //    drawingImage.Arrange(new Rect(0, 0, width, height));

        //    var bitmap = new RenderTargetBitmap((int)width, (int)height, 96, 96, PixelFormats.Pbgra32);
        //    bitmap.Render(drawingImage);

        //    var encoder = new PngBitmapEncoder();
        //    encoder.Frames.Add(BitmapFrame.Create(bitmap));

        //    using (var stream = new FileStream(fileName, FileMode.Create))
        //    {
        //        encoder.Save(stream);
        //    }
        //}

        //public static void ToImageFile(this DrawingImage drawingImage, string path)
        //{
        //    var image = new Image { Source = drawingImage };
        //    //int width = (int)drawingImage.Width;
        //    //int height = (int)drawingImage.Height;
        //    var bitmap = new RenderTargetBitmap(1920, 1080, 96, 96, PixelFormats.Pbgra32);
        //    image.Arrange(new Rect(0, 0, bitmap.Width, bitmap.Height));
        //    bitmap.Render(image);


        //    //String time = System.DateTime.Now.ToString("HH-mm-ss-fff",
        //    //            System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat);
        //    //String path = "RecImages/body_" + time + ".jpg";

        //    var encoder = new PngBitmapEncoder();
        //    encoder.Frames.Add(BitmapFrame.Create(bitmap));
        //    using (var stream = new FileStream(path, FileMode.Create))
        //    {
        //        encoder.Save(stream);
        //    }
        //}



        public static void ToImageFile(this BitmapSource btmSource, string path)
        {
            BitmapEncoder encoder;

            if (path.EndsWith(".jpg") | path.EndsWith(".jpeg"))
            {
                encoder = new JpegBitmapEncoder();
            }
            else if (path.EndsWith(".png"))
            {
                encoder = new PngBitmapEncoder();
            }
            else
            {
                throw new Exception("Only jpg and png files are valid");
            }

            encoder.Frames.Add(BitmapFrame.Create(btmSource));
            using (var fs = new FileStream(path, FileMode.Create, FileAccess.Write))
            {
                encoder.Save(fs);
            }
        }
示例#23
0
        private static void SaveImage(string file, BitmapSource bmpScr)
        {
            if (file == "")
            {
                return;
            }

            try
            {
                FileStream fileStream = new FileStream(file, FileMode.Create);

                JpegBitmapEncoder encoder = new JpegBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create(bmpScr));
                encoder.QualityLevel = 100;
                encoder.Save(fileStream);
                fileStream.Close();
                fileStream.Dispose();
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
        }
示例#24
0
        public void SaveImage(string fileName, int width = 0, int height = 0) // newly 20130306
        {
            if (width == 0 || height == 0)
            {
                width  = (int)this.ActualWidth;
                height = (int)this.ActualHeight;
            }

            double dpi  = 96;
            double mag  = dpi / 96;
            double dpix = width / this.ActualWidth * dpi;
            double dpiy = height / this.ActualHeight * dpi;
            var    bmp  = new RenderTargetBitmap(Convert.ToInt32(width * mag), Convert.ToInt32(height * mag), dpix, dpiy, PixelFormats.Pbgra32);

            bmp.Render(this);

            using (var fs = new FileStream(fileName, FileMode.OpenOrCreate))
            {
                var encoder = new JpegBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create(bmp));
                encoder.Save(fs);
            }
        }
        // Listing 2-9
        private void TakePictureButton_Click(object sender, RoutedEventArgs e)
        {
            string fileName = "snapshot.jpg";

            if (File.Exists(fileName))
            {
                File.Delete(fileName);
            }

            using (FileStream savedSnapshot = new FileStream(fileName, FileMode.CreateNew))
            {
                BitmapSource image = (BitmapSource)ColorImageElement.Source;

                JpegBitmapEncoder jpgEncoder = new JpegBitmapEncoder();
                jpgEncoder.QualityLevel = 70;
                jpgEncoder.Frames.Add(BitmapFrame.Create(image));
                jpgEncoder.Save(savedSnapshot);

                savedSnapshot.Flush();
                savedSnapshot.Close();
                savedSnapshot.Dispose();
            }
        }
示例#26
0
        public string TakePicture()
        {
            var control = captureElement;
            var size    = new Size(control.ActualWidth, control.ActualHeight);

            control.Measure(size);
            control.Arrange(new Rect(size));
            control.UpdateLayout();
            var bmp = new RenderTargetBitmap((int)size.Width, (int)size.Height, 96, 96, PixelFormats.Default);

            bmp.Render(control);
            var encoder = new JpegBitmapEncoder();

            encoder.Frames.Add(BitmapFrame.Create(bmp));
            var guid     = Guid.NewGuid();
            var filename = Path.Combine(App.PIC_DIR, $@"sam-{guid}.jpg");

            using (Stream stm = File.Create(filename))
            {
                encoder.Save(stm);
            }
            return(filename);
        }
示例#27
0
        /// <summary>
        ///     Save avatar from the Image
        /// </summary>
        private protected virtual byte[] GetNewAvatar()
        {
            var           bitmapSource  = (BitmapSource)UserAvatar.Source;
            BitmapEncoder encoderToJpeg = new JpegBitmapEncoder();

            encoderToJpeg.Frames.Add
            (
                BitmapFrame.Create
                (
                    bitmapSource
                )
            );
            byte[] newAvatar;
            using (var memoryStream = new MemoryStream()) {
                encoderToJpeg.Save
                (
                    memoryStream
                );
                newAvatar = memoryStream.ToArray();
            }

            return(newAvatar);
        }
        private byte[] getByteArrayFromImage(BitmapImage imageC)
        {
            JpegBitmapEncoder jpegBitmapEncoder = new JpegBitmapEncoder();

            if (imageC.UriSource != null)
            {
                jpegBitmapEncoder.Frames.Add(BitmapFrame.Create(imageC.UriSource));
            }
            else
            {
                jpegBitmapEncoder.Frames.Add(BitmapFrame.Create(imageC));
            }
            using (MemoryStream memoryStream = new MemoryStream())
            {
                jpegBitmapEncoder.Save(memoryStream);
                byte[] result = memoryStream.ToArray();
                memoryStream.Close();
                memoryStream.Dispose();
                jpegBitmapEncoder = null;
                imageC            = null;
                return(result);
            }
        }
示例#29
0
        private void SaveImage(object sender, RoutedEventArgs e)
        {
            BitmapImage       image   = (BitmapImage)hold.Source;
            JpegBitmapEncoder encoder = new JpegBitmapEncoder();

            encoder.Frames.Add(BitmapFrame.Create(image));
            SaveFileDialog sfd           = new SaveFileDialog();
            string         imageFileName = "";

            sfd.Filter = "jpg文件(*.jpg)|*.jpg|png文件(*.png)|*.png";
            if (sfd.ShowDialog() == true)
            {
                imageFileName = sfd.FileName;
            }
            else
            {
                return;
            }
            FileStream fileStream = new FileStream(imageFileName, FileMode.Create, FileAccess.ReadWrite);

            encoder.Save(fileStream);
            fileStream.Close();
        }
示例#30
0
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value is BitmapImage)
            {
                BitmapImage image = (BitmapImage)value;
                byte[]      data;

                JpegBitmapEncoder encoder = new JpegBitmapEncoder();

                encoder.Frames.Add(BitmapFrame.Create(image));

                using (MemoryStream ms = new MemoryStream())
                {
                    encoder.Save(ms);
                    data = ms.ToArray();
                }
                return(data);
            }
            else
            {
                return(null);
            }
        }
 /// <summary>
 /// Add another frame
 /// </summary>
 /// <param name="nextFrame">The next frame</param>
 public void Add(BitmapSource nextFrame)
 {
     var jbe = new JpegBitmapEncoder();
     jbe.QualityLevel = 100;
     jbe.Frames.Add(BitmapFrame.Create(nextFrame));
     jbe.Save(vs);
 }