using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Media.Imaging; namespace PDF_Master.Helper { public class PictureConverter { /// /// 图片转PNG(其他图片先转为PNG在转JPG) /// picturefile 图片文件名 /// filePath 保存路径例如//filePath.png /// public static bool SavePng(string picturefile, string filePath) { Image img = Image.FromFile(picturefile); try { using (var bmp = new Bitmap(img.Width, img.Height)) { bmp.SetResolution(img.HorizontalResolution, img.VerticalResolution); using (var g = Graphics.FromImage(bmp)) { g.Clear(Color.White); g.DrawImageUnscaled(img, 0, 0); } bmp.Save(filePath, System.Drawing.Imaging.ImageFormat.Png); } return true; } catch { return false; } } /// /// 图片转PNG(其他图片先转为PNG在转JPG) /// picturefile 图片image /// filePath 保存路径例如//filePath.png /// public static bool SavePng(Image img, string filePath) { try { using (var bmp = new Bitmap(img.Width, img.Height)) { bmp.SetResolution(img.HorizontalResolution, img.VerticalResolution); using (var g = Graphics.FromImage(bmp)) { g.Clear(Color.White); g.DrawImageUnscaled(img, 0, 0); } bmp.Save(filePath, System.Drawing.Imaging.ImageFormat.Png); } return true; } catch { return false; } } /// /// 图片转JPeG /// picturefile 图片文件名 /// filePath 保存路径例如//filePath.jpg /// public static bool SaveJpeg(string picturefile, string filePath) { Image img = Image.FromFile(picturefile); try { using (var bmp = new Bitmap(img.Width, img.Height)) { bmp.SetResolution(img.HorizontalResolution, img.VerticalResolution); using (var g = Graphics.FromImage(bmp)) { g.Clear(Color.White); g.DrawImageUnscaled(img, 0, 0); } //存储各种格式 //bmp.Save(filePath, System.Drawing.Imaging.ImageFormat.Gif); //bmp.Save(filePath, System.Drawing.Imaging.ImageFormat.Png); bmp.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg); } return true; } catch { return false; } } /// /// 图片转JPeG /// img 图片Image /// filePath 保存路径例如//filePath.jpg /// public static bool SaveJpeg(Image img, string filePath) { try { using (var bmp = new Bitmap(img.Width, img.Height)) { bmp.SetResolution(img.HorizontalResolution, img.VerticalResolution); using (var g = Graphics.FromImage(bmp)) { g.Clear(Color.White); g.DrawImageUnscaled(img, 0, 0); } //存储各种格式 //bmp.Save(filePath, System.Drawing.Imaging.ImageFormat.Gif); //bmp.Save(filePath, System.Drawing.Imaging.ImageFormat.Png); bmp.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg); } return true; } catch { return false; } } public static byte[] GetImageByteFromPath(string ImagePath, string fileExt, out double width, out double height) { try { #region 跟图章一样的转换方法。 if (ImagePath != null && ImagePath.Length > 0 && File.Exists(ImagePath)) { FileStream fileData = File.OpenRead(ImagePath); BitmapFrame frame = null; width = 0; height = 0; if (fileExt.Contains(".jpg") || fileExt.Contains(".jpeg")) { JpegBitmapDecoder decoder = (JpegBitmapDecoder)JpegBitmapDecoder.Create(fileData, BitmapCreateOptions.None, BitmapCacheOption.Default); frame = decoder.Frames[0]; width = frame.Width; height = frame.Height; } else if (fileExt.Contains(".png")) { PngBitmapDecoder decoder = (PngBitmapDecoder)PngBitmapDecoder.Create(fileData, BitmapCreateOptions.None, BitmapCacheOption.Default); frame = decoder.Frames[0]; width = frame.Width; height = frame.Height; } else if (fileExt.Contains(".bmp")) { BmpBitmapDecoder decoder = (BmpBitmapDecoder)BmpBitmapDecoder.Create(fileData, BitmapCreateOptions.None, BitmapCacheOption.Default); frame = decoder.Frames[0]; width = frame.Width; height = frame.Height; } else//默认采用png的解码方式 { BitmapDecoder decoder = BitmapDecoder.Create(fileData, BitmapCreateOptions.None, BitmapCacheOption.Default); frame = decoder.Frames[0]; width = frame.Width; height = frame.Height; } if (frame != null) { var ImageArray = new byte[frame.PixelWidth * frame.PixelHeight * 4]; frame.CopyPixels(ImageArray, frame.PixelWidth * 4, 0); return ImageArray; } return null; } width = 0; height = 0; return null; #endregion } catch { width = 0; height = 0; return null; } } } }