// 调整图片文件大小 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; } } }
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 { }; }
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; } }
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); }