Ejemplo n.º 1
0
        /// <summary>
        /// 将图像放大或缩小
        /// </summary>
        /// <param name="图像">源图像</param>
        /// <param name="指定宽度">指定的宽度,为0则保持原始值</param>
        /// <param name="指定高度">指定的高度,为0则保持原始值</param>
        /// <param name="缩放方式">缩放时采用的处理方式</param>
        /// <returns>缩放后的图像</returns>
        public static BitmapSource 缩放图像(this BitmapSource 图像, int 指定宽度, int 指定高度, 缩放方式 缩放方式)
        {
            var s   = Drawing处理函数.计算缩放尺寸(缩放方式, 图像.PixelWidth, 图像.PixelHeight, 指定宽度, 指定高度);
            var img = 缩放图像(图像, s.Width, s.Height);

            if (缩放方式 == 缩放方式.强制裁剪)
            {
                var tw = 指定宽度 == 0 ? 图像.PixelWidth : 指定宽度;
                var th = 指定高度 == 0 ? 图像.PixelHeight : 指定高度;
                return(剪裁图像(img, img.PixelWidth / 2 - tw / 2, img.PixelHeight / 2 - th / 2, tw, th));
            }
            return(img);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 将图像放大或缩小
        /// </summary>
        /// <param name="图像">源图像</param>
        /// <param name="指定宽度">指定的宽度,为0则保持原始值</param>
        /// <param name="指定高度">指定的高度,为0则保持原始值</param>
        /// <param name="缩放方式">缩放时采用的处理方式</param>
        /// <param name="插值算法">插值算法</param>
        /// <param name="平滑模式">平滑模式</param>
        /// <param name="合成质量">合成质量</param>
        /// <returns>缩放后的图像</returns>
        public static Bitmap 缩放图像(this Image 图像, int 指定宽度, int 指定高度, 缩放方式 缩放方式, InterpolationMode 插值算法, SmoothingMode 平滑模式, CompositingQuality 合成质量)
        {
            var s   = 计算缩放尺寸(缩放方式, 图像.Width, 图像.Height, 指定宽度, 指定高度);
            var img = 缩放图像(图像, s, 插值算法, 平滑模式, 合成质量);

            if (缩放方式 == 缩放方式.强制裁剪)
            {
                var tw = 指定宽度 == 0 ? 图像.Width : 指定宽度;
                var th = 指定高度 == 0 ? 图像.Height : 指定高度;
                img = 剪裁图像(img, new Point(img.Width / 2 - tw / 2, img.Height / 2 - th / 2), new Size(tw, th));
            }
            return(img);
        }
Ejemplo n.º 3
0
        public void 缩放图像Test1()
        {
            Image  图像       = Bitmap.FromFile(@"E:\下载\6db1a742jw1dhybtayuajj.jpg");
            int    指定宽度     = 300;  // TODO: 初始化为适当的值
            int    指定高度     = 300;  // TODO: 初始化为适当的值
            缩放方式   缩放方式     = Core.Drawing.缩放方式.强制裁剪;
            Bitmap expected = null; // TODO: 初始化为适当的值
            Bitmap actual;

            actual = Drawing处理函数.缩放图像(图像, 指定宽度, 指定高度, 缩放方式);
            //Assert.AreEqual(expected, actual);
            actual.Save("i:\\test.jpg", ImageFormat.Jpeg);
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
Ejemplo n.º 4
0
 public void 缩放图像Test()
 {
     Image 图像 = null; // TODO: 初始化为适当的值
     int 指定宽度 = 0; // TODO: 初始化为适当的值
     int 指定高度 = 0; // TODO: 初始化为适当的值
     缩放方式 缩放方式 = new 缩放方式(); // TODO: 初始化为适当的值
     InterpolationMode 插值算法 = new InterpolationMode(); // TODO: 初始化为适当的值
     SmoothingMode 平滑模式 = new SmoothingMode(); // TODO: 初始化为适当的值
     CompositingQuality 合成质量 = new CompositingQuality(); // TODO: 初始化为适当的值
     Bitmap expected = null; // TODO: 初始化为适当的值
     Bitmap actual;
     actual = Drawing处理函数.缩放图像(图像, 指定宽度, 指定高度, 缩放方式, 插值算法, 平滑模式, 合成质量);
     Assert.AreEqual(expected, actual);
     Assert.Inconclusive("验证此测试方法的正确性。");
 }
Ejemplo n.º 5
0
        public void 缩放图像Test()
        {
            Image              图像       = null;                     // TODO: 初始化为适当的值
            int                指定宽度     = 0;                        // TODO: 初始化为适当的值
            int                指定高度     = 0;                        // TODO: 初始化为适当的值
            缩放方式               缩放方式     = new 缩放方式();               // TODO: 初始化为适当的值
            InterpolationMode  插值算法     = new InterpolationMode();  // TODO: 初始化为适当的值
            SmoothingMode      平滑模式     = new SmoothingMode();      // TODO: 初始化为适当的值
            CompositingQuality 合成质量     = new CompositingQuality(); // TODO: 初始化为适当的值
            Bitmap             expected = null;                     // TODO: 初始化为适当的值
            Bitmap             actual;

            actual = Drawing处理函数.缩放图像(图像, 指定宽度, 指定高度, 缩放方式, 插值算法, 平滑模式, 合成质量);
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("验证此测试方法的正确性。");
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 计算应产生的图像缩放尺寸
        /// </summary>
        /// <param name="缩放方式">缩放时采用的处理方式</param>
        /// <param name="原始宽度">源图像宽度</param>
        /// <param name="原始高度">源图像高度</param>
        /// <param name="指定宽度">指定的宽度,为0则保持原始值</param>
        /// <param name="指定高度">指定的高度,为0则保持原始值</param>
        /// <returns>缩放后的尺寸</returns>
        public static Size 计算缩放尺寸(缩放方式 缩放方式, int 原始宽度, int 原始高度, int 指定宽度, int 指定高度)
        {
            var w  = 原始宽度;
            var h  = 原始高度;
            var tw = 指定宽度 == 0 ? w : 指定宽度;
            var th = 指定高度 == 0 ? h : 指定高度;

            switch (缩放方式)
            {
            case 缩放方式.保持长宽比:
                if (tw * 1.00 / w < th * 1.00 / h)
                {
                    h = (int)(tw * 1.00 / w * h);
                    w = tw;
                }
                else
                {
                    w = (int)(th * 1.00 / h * w);
                    h = th;
                }
                break;

            case 缩放方式.强制拉伸:
                w = tw;
                h = th;
                break;

            case 缩放方式.强制裁剪:
                if (tw * 1.00 / w > th * 1.00 / h)
                {
                    h = (int)(tw * 1.00 / w * h);
                    w = tw;
                }
                else
                {
                    w = (int)(th * 1.00 / h * w);
                    h = th;
                }
                break;

            default:
                break;
            }
            return(new Size(w, h));
        }
Ejemplo n.º 7
0
 /// <summary>
 /// 将图像放大或缩小,默认采用高质量缩放
 /// </summary>
 /// <param name="图像">源图像</param>
 /// <param name="指定宽度">指定的宽度,为0则不约束</param>
 /// <param name="指定高度">指定的高度,为0则不约束</param>
 /// <param name="缩放方式">缩放时采用的处理方式</param>
 /// <returns>缩放后的图像</returns>
 public static Bitmap 缩放图像(this Image 图像, int 指定宽度, int 指定高度, 缩放方式 缩放方式)
 {
     return(缩放图像(图像, 指定宽度, 指定高度, 缩放方式, InterpolationMode.HighQualityBicubic, SmoothingMode.HighQuality, CompositingQuality.HighQuality));
 }
Ejemplo n.º 8
0
 /// <summary>
 /// 将图像放大或缩小
 /// </summary>
 /// <param name="图像">源图像</param>
 /// <param name="指定宽度">指定的宽度,为0则保持原始值</param>
 /// <param name="指定高度">指定的高度,为0则保持原始值</param>
 /// <param name="缩放方式">缩放时采用的处理方式</param>
 /// <returns>缩放后的图像</returns>
 public static BitmapSource 缩放图像(this BitmapSource 图像, int 指定宽度, int 指定高度, 缩放方式 缩放方式)
 {
     var s = Drawing处理函数.计算缩放尺寸(缩放方式, 图像.PixelWidth, 图像.PixelHeight, 指定宽度, 指定高度);
     var img = 缩放图像(图像, s.Width, s.Height);
     if (缩放方式 == 缩放方式.强制裁剪)
     {
         var tw = 指定宽度 == 0 ? 图像.PixelWidth : 指定宽度;
         var th = 指定高度 == 0 ? 图像.PixelHeight : 指定高度;
         return 剪裁图像(img, img.PixelWidth / 2 - tw / 2, img.PixelHeight / 2 - th / 2, tw, th);
     }
     return img;
 }