DTCMS,添加文章时,内容中第一张图片作缩略图,并且等比例缩放图片

DTCMS,添加文章时,内容中第一张图片作缩略图

admin/article/article_edit.aspx.cs

 

导入:

using System.Drawing;
using System.Drawing.Imaging;

 

private bool DoAdd()方法

  //是否将编辑器远程图片保存到本地
            if (siteConfig.fileremote == 1)
            {
model.content = AutoRemoteImageSave(txtContent.Value);

后面加入:

//设置内容中第一张图片为缩略图
               
                Regex reg = new Regex("IMG[^>]*?src\\s*=\\s*(?:\"(?<1>[^\"]*)\"|'(?<1>[^\']*)')", RegexOptions.IgnoreCase);
                MatchCollection m = reg.Matches(model.content);
                foreach (Match math in m)
                {
                    if (math.Index >)
                    {
                        
                        string imgUri = math.Groups[1].Value;
                        if (imgUri != string.Empty)
                        {
                            string mini = imgUri.ToLower().Substring(imgUri.LastIndexOf("."));
                            string path = imgUri.Substring(0, imgUri.Length - mini.Length);
                            BLL.siteconfig bll_config = new BLL.siteconfig();
                            Model.siteconfig m_config = bll_config.loadConfig();
                            int h = m_config.thumbnailheight;
                            int w = m_config.thumbnailwidth;
                            Bitmap bmp = new Bitmap(Server.MapPath(imgUri));
                            Bitmap bmp_new = ZoomImage(bmp, h, w);
                            switch (mini)
                            {
                                case ".jpg": bmp_new.Save(Server.MapPath(path + "_thum" + mini), ImageFormat.Jpeg); break;
                                case ".gif": bmp_new.Save(Server.MapPath(path + "_thum" + mini), ImageFormat.Gif); break;
                                    
                            }

                            hidFocusPhoto.Value = path + "_thum" + mini;
                break; } } }

 添加方法:

       #region  等比例缩放图片
        private Bitmap ZoomImage(Bitmap bitmap, int destHeight, int destWidth)
        {
            try
            {
                
                System.Drawing.Image sourImage = bitmap;
                int width = 0, height = 0;
                //按比例缩放             
                int sourWidth = sourImage.Width;
                int sourHeight = sourImage.Height;
                if (sourHeight > destHeight || sourWidth > destWidth)
                {
                    if ((sourWidth * destHeight) > (sourHeight * destWidth))
                    {
                        width = destWidth;
                        height = (destWidth * sourHeight) / sourWidth;
                    }
                    else
                    {
                        height = destHeight;
                        width = (sourWidth * destHeight) / sourHeight;
                    }
                }
                else
                {
                    width = sourWidth;
                    height = sourHeight;
                }
                Bitmap destBitmap = new Bitmap(destWidth, destHeight);
                Graphics g = Graphics.FromImage(destBitmap);
                g.Clear(Color.Transparent);
                //设置画布的描绘质量           
                g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                g.DrawImage(sourImage, new Rectangle((destWidth - width) / 2, (destHeight - height) / 2, width, height), 0, 0, sourImage.Width, sourImage.Height, GraphicsUnit.Pixel);
                g.Dispose();
                //设置压缩质量       
                System.Drawing.Imaging.EncoderParameters encoderParams = new System.Drawing.Imaging.EncoderParameters();
                long[] quality = new long[1];
                quality[0] = 100;
                System.Drawing.Imaging.EncoderParameter encoderParam = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
                encoderParams.Param[0] = encoderParam;
                sourImage.Dispose();
                return destBitmap;
            }
            catch
            {
                return bitmap;
            }
        }  
        #endregion

 

posted @ 2017-08-10 23:48  请叫我七哥  阅读(545)  评论(0编辑  收藏  举报