Example #1
0
        /// <summary>
        /// 获取缩略图尺寸
        /// </summary>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="mode"></param>
        /// <param name="src"></param>
        /// <returns></returns>
        public static ThumbSize getTargetSize(int width, int height, SaveThumbnailMode mode, Image src)
        {
            ThumbSize t = new ThumbSize();

            t.Src   = new Size(src.Width, src.Height);
            t.Point = new Point(0, 0);

            if (mode == SaveThumbnailMode.ByWidth)
            {
                int newHeight = src.Height * width / src.Width;
                t.New = new Size(width, newHeight);
                return(t);
            }
            else if (mode == SaveThumbnailMode.ByHeight)
            {
                int newWidth = src.Width * height / src.Height;
                t.New = new Size(newWidth, height);
                return(t);
            }
            else if (mode == SaveThumbnailMode.ByWidthHeight)
            {
                t.New = new Size(width, height);
                return(t);
            }
            else if (mode == SaveThumbnailMode.Cut)
            {
                return(getCutSize(width, height, mode, src));
            }

            return(getAutoSize(width, height, mode, src));
        }
Example #2
0
        /// <summary>
        /// 保存缩略图到磁盘(可指定宽高,可指定缩放模式)
        /// </summary>
        /// <param name="srcPath"></param>
        /// <param name="destPath"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="mode"></param>
        public static void SaveThumbnail(String srcPath, String destPath, int width, int height, SaveThumbnailMode mode)
        {
            try {
                using (Image srcImg = Image.FromFile(srcPath)) {
                    ThumbSize t = getTargetSize(width, height, mode, srcImg);
                    using (Bitmap newImg = new Bitmap(t.New.Width, t.New.Height)) {
                        using (Graphics g = Graphics.FromImage(newImg)) {
                            g.InterpolationMode = InterpolationMode.High;
                            g.SmoothingMode     = SmoothingMode.HighQuality;
                            g.Clear(Color.White);
                            g.DrawImage(srcImg, t.getNewRect(), t.getRect(), GraphicsUnit.Pixel);

                            try {
                                newImg.Save(destPath, ImageFormat.Jpeg);
                            }
                            catch (Exception e) {
                                throw e;
                            }
                        }
                    }
                }
            }
            catch (OutOfMemoryException ex) {
                logger.Error("file format error: " + srcPath);
            }
        }
Example #3
0
        private static ThumbSize getCutSize(int width, int height, SaveThumbnailMode mode, Image src)
        {
            ThumbSize t = new ThumbSize();

            if ((double)src.Width / (double)src.Height > (double)width / (double)height)
            {
                int newWidth = src.Height * width / height;
                t.Src   = new Size(newWidth, src.Height);
                t.New   = new Size(width, height);
                t.Point = new Point((src.Width - newWidth) / 2, 0);
            }
            else
            {
                int newHeight = src.Width * height / width;
                t.Src   = new Size(src.Width, newHeight);
                t.New   = new Size(width, height);
                t.Point = new Point(0, (src.Height - newHeight) / 2);
            }

            return(t);
        }
Example #4
0
        private static ThumbSize getAutoSize(int width, int height, SaveThumbnailMode mode, Image src)
        {
            ThumbSize t = new ThumbSize();

            t.Src   = new Size(src.Width, src.Height);
            t.Point = new Point(0, 0);

            int newWidth  = width;
            int newHeight = height;

            if ((double)src.Width / (double)src.Height > (double)width / (double)height)
            {
                newHeight = src.Height * width / src.Width;
            }
            else
            {
                newWidth = src.Width * height / src.Height;
            }
            t.New = new Size(newWidth, newHeight);

            return(t);
        }
Example #5
0
File: Img.cs Project: jilumvc/Sajoo
        private static ThumbSize getCutSize( int width, int height, SaveThumbnailMode mode, Image src )
        {
            ThumbSize t = new ThumbSize();

            if ((double)src.Width / (double)src.Height > (double)width / (double)height) {

                int newWidth = src.Height * width / height;
                t.Src = new Size( newWidth, src.Height );
                t.New = new Size( width, height );
                t.Point = new Point( (src.Width - newWidth) / 2, 0 );
            }
            else {

                int newHeight = src.Width * height / width;
                t.Src = new Size( src.Width, newHeight );
                t.New = new Size( width, height );
                t.Point = new Point( 0, (src.Height - newHeight) / 2 );

            }

            return t;
        }
Example #6
0
File: Img.cs Project: jilumvc/Sajoo
        private static ThumbSize getAutoSize( int width, int height, SaveThumbnailMode mode, Image src )
        {
            ThumbSize t = new ThumbSize();
            t.Src = new Size( src.Width, src.Height );
            t.Point = new Point( 0, 0 );

            int newWidth = width;
            int newHeight = height;
            if ((double)src.Width / (double)src.Height > (double)width / (double)height)
                newHeight = src.Height * width / src.Width;
            else
                newWidth = src.Width * height / src.Height;
            t.New = new Size( newWidth, newHeight );

            return t;
        }
Example #7
0
File: Img.cs Project: jilumvc/Sajoo
        /// <summary>
        /// 获取缩略图尺寸
        /// </summary>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="mode"></param>
        /// <param name="src"></param>
        /// <returns></returns>
        public static ThumbSize getTargetSize( int width, int height, SaveThumbnailMode mode, Image src )
        {
            ThumbSize t = new ThumbSize();
            t.Src = new Size( src.Width, src.Height );
            t.Point = new Point( 0, 0 );

            if (mode == SaveThumbnailMode.ByWidth) {
                int newHeight = src.Height * width / src.Width;
                t.New = new Size( width, newHeight );
                return t;
            }
            else if (mode == SaveThumbnailMode.ByHeight) {
                int newWidth = src.Width * height / src.Height;
                t.New = new Size( newWidth, height );
                return t;
            }
            else if (mode == SaveThumbnailMode.ByWidthHeight) {
                t.New = new Size( width, height );
                return t;
            }
            else if (mode == SaveThumbnailMode.Cut) {
                return getCutSize( width, height, mode, src );
            }

            return getAutoSize( width, height, mode, src );
        }