Exemplo n.º 1
0
        // 调整图片文件大小
        private void ResizeImage()
        {
            UploadStatus = UploadStatus.Resizing;

            using (Stream fileStream = m_file.OpenRead())
            {
                // 利用FluxJpeg解码
                DecodedJpeg jpegIn = new JpegDecoder(fileStream).Decode();

                if (ImageResizer.ResizeNeeded(jpegIn.Image, ImageSize))
                {
                    // 调整
                    DecodedJpeg jpegOut = new DecodedJpeg(
                        new ImageResizer(jpegIn.Image).Resize(ImageSize, ResamplingFilters.NearestNeighbor)
                        , jpegIn.MetaHeaders);  // 获取EXIF详细信息

                    // 编码
                    m_resizeStream = new MemoryStream();
                    new JpegEncoder(jpegOut, 90, m_resizeStream).Encode();

                    // 显示
                    m_resizeStream.Seek(0, SeekOrigin.Begin);
                    FileLength = m_resizeStream.Length;
                }
            }
        }
Exemplo n.º 2
0
        void Resize()
        {
            Status = FileUploadStatus.Resizing;
            try
            {
                Stream fileStream = file.OpenRead();

                using (fileStream)
                {
                    // Decode
                    DecodedJpeg jpegIn = new JpegDecoder(fileStream).Decode();

                    if (!ImageResizer.ResizeNeeded(jpegIn.Image, ImageSize))
                    {
                        return;
                    }
                    else
                    {
                        // Resize
                        DecodedJpeg jpegOut = new DecodedJpeg(
                            new ImageResizer(jpegIn.Image)
                            .Resize(ImageSize, ResamplingFilters.NearestNeighbor),
                            jpegIn.MetaHeaders); // Retain EXIF details

                        // Encode
                        resizeStream = new MemoryStream();
                        new JpegEncoder(jpegOut, 90, resizeStream).Encode();
                        // Display
                        resizeStream.Seek(0, SeekOrigin.Begin);
                        FileLength = resizeStream.Length;
                    }
                }
            }
            catch { };
        }
Exemplo n.º 3
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog()
            {
                Filter = "Image files (*.jpg)|*.jpg"
            };

            if (ofd.ShowDialog() != true)
            {
                return;
            }

            Stream fileStream = ofd.File.OpenRead();

            // Display input image
            Stream      inStream = new MemoryStream(new BinaryReader(fileStream).ReadBytes((int)fileStream.Length));
            BitmapImage imageIn  = new BitmapImage();

            imageIn.SetSource(inStream);
            InputImage.Source = imageIn;

            // Rewind
            fileStream.Seek(0, SeekOrigin.Begin);

            using (fileStream)
            {
                // Decode
                DecodedJpeg jpegIn = new JpegDecoder(fileStream).Decode();

                if (!ImageResizer.ResizeNeeded(jpegIn.Image, 320))
                {
                    OutputImage.Source = null;
                    OutputText.Text    = "No resize necessary.";
                    return;
                }

                // Resize
                DecodedJpeg jpegOut = new DecodedJpeg(
                    new ImageResizer(jpegIn.Image)
                    .Resize(320, ResamplingFilters.NearestNeighbor),
                    jpegIn.MetaHeaders); // Retain EXIF details

                // Encode
                MemoryStream outStream = new MemoryStream();
                new JpegEncoder(jpegOut, 90, outStream).Encode();

                // Display
                outStream.Seek(0, SeekOrigin.Begin);
                BitmapImage image = new BitmapImage();
                image.SetSource(outStream);
                OutputImage.Source = image;
            }
        }
Exemplo n.º 4
0
        static Image Resize(string pathIn, int edge)
        {
            JpegDecoder decoder = new JpegDecoder(File.Open(pathIn, FileMode.Open));
            DecodedJpeg jpeg    = decoder.Decode();

            if (ImageResizer.ResizeNeeded(jpeg.Image, edge))
            {
                ImageResizer resizer = new ImageResizer(jpeg.Image);
                return(resizer.ResizeToScale(edge, ResamplingFilters.LowpassAntiAlias));
            }

            return(jpeg.Image);
        }