/// <summary> /// /// </summary> /// <param name="im"></param> /// <returns></returns> private BitmapSource func_mi_回傳前壓縮圖片(ImageMagick.MagickImage im) { //2500 if (im.Width > M.b2.ActualWidth || im.Height > M.b2.ActualHeight) //縮小圖片後在載入 { using (ImageMagick.IMagickImage ii = im.Clone()) { //計算縮放比例 double d_縮放倍率 = 1; var w03 = M.b2.ActualWidth; var h03 = M.b2.ActualHeight; if (ii.Width / w03 > ii.Height / h03) { d_縮放倍率 = M.b2.ActualWidth / ii.Width; } else { d_縮放倍率 = M.b2.ActualHeight / ii.Height; } //縮放 var mg = new ImageMagick.MagickGeometry(); mg.Height = (int)(ii.Height * d_縮放倍率); mg.Width = (int)(ii.Width * d_縮放倍率); ii.Resize(mg); return(ii.ToBitmapSource()); } } else { return(im.ToBitmapSource()); } }
public static double GetTransparencyRate(this ImageMagick.IMagickImage mi) { if (!mi.HasAlpha) { return(0d); } var bytes = mi.Separate(ImageMagick.Channels.Alpha).First().GetPixels().GetValues(); return((byte.MaxValue - bytes.Average(x => (double)x)) / byte.MaxValue); }