Beispiel #1
0
        /// <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());
            }
        }
Beispiel #2
0
        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);
        }