生成缩率图项目实例

 /// <summary>
        /// 生成缩略图
        /// </summary>
        /// <param name="fileName">源图路径(绝对路径)</param>
        /// <param name="newFileName">缩略图路径(绝对路径)</param>
        /// <param name="width">缩略图宽度</param>
        /// <param name="height">缩略图高度</param>
        /// <param name="mode">"HW":指定高宽缩放(不变形)</param>
        public static void MakeThumbnailImage(string fileName, string newFileName, int width, int height, string mode)
        {
            Image originalImage = Image.FromFile(fileName);
            int Imgwidth = width;
            int Imgheight = height;

            int towidth = width;
            int toheight = height;
            int tox = 0;
            int toy = 0;

            int x = 0;
            int y = 0;
            int ow = originalImage.Width;
            int oh = originalImage.Height;

            switch (mode)
            {
                case "HW"://等高宽缩放(不变形)
                    if ((double)ow / (double)oh > (double)towidth / (double)toheight)
                    {
                        towidth = width;
                        toheight = Convert.ToInt32((double)oh * (double)towidth / (double)ow);
                        toy = (height - toheight) / 2;

                        Imgwidth = width;
                        Imgheight = height;
                    }
                    else
                    {
                        toheight = height;
                        towidth = Convert.ToInt32((double)ow * (double)toheight / (double)oh);
                        tox = (width - towidth) / 2;

                    }
                    break;

                case "W"://指定宽,高按比例
                    towidth = originalImage.Width > width ? width : originalImage.Width;
                    toheight = originalImage.Height * towidth / originalImage.Width;

                    Imgwidth = towidth;
                    Imgheight = toheight;
                    break;
                case "H"://指定高,宽按比例
                    toheight = originalImage.Height > height ? height : originalImage.Height;
                    towidth = originalImage.Width * toheight / originalImage.Height;

                    Imgwidth = towidth;
                    Imgheight = toheight;
                    break;
                case "Cut"://指定高宽裁减(不变形)
                    if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
                    {
                        oh = originalImage.Height;
                        ow = originalImage.Height * towidth / toheight;
                        y = 0;
                        x = (originalImage.Width - ow) / 2;
                    }
                    else
                    {
                        ow = originalImage.Width;
                        oh = originalImage.Width * height / towidth;
                        x = 0;
                        y = (originalImage.Height - oh) / 2;
                    }

                    Imgwidth = width;
                    Imgheight = height;
                    break;
                default:
                    break;
            }

            //新建一个bmp图片
            Bitmap b = new Bitmap(Imgwidth, Imgheight);
            try
            {
                //新建一个画板
                Graphics g = Graphics.FromImage(b);
                //设置高质量插值法
                g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                //设置高质量,低速度呈现平滑程度
                g.SmoothingMode = SmoothingMode.HighQuality;
                g.PixelOffsetMode = PixelOffsetMode.HighQuality;
                g.CompositingQuality = CompositingQuality.HighQuality;
                //清空画布并以透明背景色填充
                g.Clear(Color.Transparent);
                //在指定位置并且按指定大小绘制原图片的指定部分
                g.DrawImage(originalImage, new Rectangle(tox, toy, towidth, toheight), new Rectangle(0, 0, ow, oh), GraphicsUnit.Pixel);

                SaveImage(b, newFileName, GetCodecInfo("image/" + GetFormat(newFileName).ToString().ToLower()));
                g.Dispose();
            }
            catch (System.Exception e)
            {
                throw e;
            }
            finally
            {

                originalImage.Dispose();
                b.Dispose();
            }
        }

时间: 2024-10-07 22:25:22

生成缩率图项目实例的相关文章

Asp.net mvc 实时生成缩率图到硬盘

之前对于缩率图的处理是在图片上传到服务器之后,同步生成两张不同尺寸的缩率供前端调用,刚开始还能满足需求,慢慢的随着前端展示的多样化,缩率图已不能前端展示的需求,所以考虑做一个实时生成图片缩率图服务. 每次调用实时生成缩率图,不缓存着实有点浪费,所以在生成缩率的同时缓存到硬盘一份,效率提高很多. 之前从网上看了一下有人用nginx + lua实现的,效率那是没什么可说的,但是时间紧迫,自己也没时间去研究,所以暂时先用aps.net mvc4来实现 一个,以后有时间了,再慢慢修改. 用自己熟悉的.n

thinkphp3.2.3----图片上传并生成缩率图

1 public function uploadify(){ 2 if(!IS_POST){ 3 $this->error('非法!'); 4 } 5 $upload = $this->_upload(); 6 } 7 8 protected function _upload(){ 9 $obj = new \Think\Upload(); 10 $obj->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型 11 $obj->

添加ModelGoon插件Eclipse自动生成UML图

下载ModelGoonjar包 http://download.csdn.net/detail/u011070297/8366021 下载完该jar之后,直接拷贝到Eclipse安装目录下的dropins目录下,重启Eclipse即可  如何使用 安装成功后,file=>new=>other菜单里面会多出一项ModelGoon Diagrams,在自己已有的java工程中新建一个class diagram,用以生成类图.创建完成后你会发现生成了一个.mgc后缀的文件,现在你可以用这个文件创建自

highcharts实例教程一:结合php与mysql生成折线图

Highcharts是一款纯javascript和html5编写的图表库,不仅几乎能兼容所有pc浏览器,而且对ios和android手机端的兼容 性也不错,它能够很简单便捷的在Web网站或Web应用中添加交互性的图表,Highcharts目前支持直线图.折线图.面积图.柱状图.饼图.散点图 等多达28种不同类型的图表,还支持3D立体图表的生成,可以满足你对Web图表的任何需求 !而且Highcharts对学习者.非商业机构是免费使用的. 案例场景:要求针对技术cto网站,直观地显示一周网站pv.

用Enterprise Architect从源码自动生成类图

http://blog.csdn.net/zhouyong0/article/details/8281192 /*references:感谢资源分享者.info:简单记录如何通过工具从源码生成类图,便于分析代码结构,对源码阅读挺有用.*/ 看点开源代码学习下,本想找个代码查看方便点的工具,便于理清代码层次,结果发现了Enterprise Architect这一好工具,试用下来还挺方便的.功能上和Rational Rose大致是一类,用处很广,很多我都不懂,知道能画各种UML图,支持的源码语言类型

用mysql workbench生成ER图

下载安装mysql workbench 画图啦 白白 下载安装mysql workbench 首先是下载mysql workbench,windows系统的自己百度,我用的是ubuntu 14.04LTS,百度到的结果有点坑,叫我去官网,但是选择平台后就没下文了T_T,最后忽然想起系统自带有软件中心,直接去本机自带的ubuntu softwore center查找,安装就好了. 画图啦 如何让workbench根据数据库表的结构,自动生成ER图呢?这需要用到逆向工程!!!!顾名思义就好,我只是个

eclipse自动生成类图

怎么从java类自动转换成java类图,一直没搞成.于是,我在网上找了一款更强大的自动生成java类图的eclipse插件--ModelSpoon..这个兄弟很强大,只要把.java文件直接拖进去,它就能够直接生成java类图.非常好用. 2.安装和使用ModelSpoon功能:能将Eclipse中现有的java类生成类图一:什么是ModelGoon?它是一个Eclipse插件,用于基于UML图的模型设计,以及逆向工程(即从已有源代码生成类图).二:安装下载ModelGoon-4.4.1-sit

使用RetionalRose根据现有的java工程逆向生成类图

1.进入RetionalRose选择J2EE模板 2.在菜单栏选择tools->java/j2EE->reverse engineer 3.编辑路径Edit CLASSPATH选择要生成类图的Java项目src文件 4.点击含有java源文件的文件夹,再点击Add Recursive按钮 5.先点击selectAll再点击Reverse 6.点击Done完成,java工程代码中描绘的类都已出现在左侧的LogicalView中,可以新建类图后拖拽将其显示出来

chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法[bubuko.com]

chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法,原文: 默认情况下如下图 Y轴并不是从0开始,这样折现图的幅度会很大,不是正常的幅度,解决办法如下, 示例代码: window.onload = function () { var ctx = document.getElementById("canvas").getContext("2d"); window.myLine = new Chart(ctx).Line(lineChartDat