当前位置: 代码迷 >> ASP.NET >> 300份,谋求生成网页缩略图代码
  详细解决方案

300份,谋求生成网页缩略图代码

热度:7772   发布时间:2013-02-25 00:00:00.0
300份,寻求生成网页缩略图代码
自己手里有一个,不太稳定。

------解决方案--------------------------------------------------------
http://download.csdn.net/down/682252/yulinghua
这个呢
------解决方案--------------------------------------------------------
来接分。
------解决方案--------------------------------------------------------
C# code
 private void CreateThumbnail(string sFileSrcPath, string sFileDstPath, int iSizeLimit)    {        if (File.Exists(sFileSrcPath))        {            System.Drawing.Image image = System.Drawing.Image.FromFile(sFileSrcPath) as System.Drawing.Bitmap;            System.Drawing.SizeF size = new System.Drawing.SizeF(image.Width, image.Height);            while (size.Width > iSizeLimit || size.Height > iSizeLimit)            {                size.Height /= 1.1F;                size.Width /= 1.1F;            }            System.Drawing.Image bitmap = new System.Drawing.Bitmap(Convert.ToInt16(size.Width), Convert.ToInt16(size.Height));            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;            g.Clear(Color.Transparent);            Rectangle rect = new Rectangle(0, 0, bitmap.Width, bitmap.Height);            g.DrawImage(image, rect, new System.Drawing.Rectangle(0, 0, image.Width, image.Height), System.Drawing.GraphicsUnit.Pixel);            ImageCodecInfo myImageCodecInfo;            Encoder myEncoder;            EncoderParameter myEncoderParameter;            EncoderParameters myEncoderParameters;            myImageCodecInfo = ImageCodecInfo.GetImageEncoders()[0];            myEncoder = Encoder.Quality;            myEncoderParameters = new EncoderParameters(1);            myEncoderParameter = new EncoderParameter(myEncoder, 100L);             myEncoderParameters.Param[0] = myEncoderParameter;            bitmap.Save(sFileDstPath, myImageCodecInfo, myEncoderParameters);            myEncoderParameter.Dispose();            myEncoderParameters.Dispose();            image.Dispose();            bitmap.Dispose();            g.Dispose();        }    }
------解决方案--------------------------------------------------------
mark
------解决方案--------------------------------------------------------
mark
------解决方案--------------------------------------------------------
顶!
------解决方案--------------------------------------------------------
帮顶
------解决方案--------------------------------------------------------
自己修改修改啊。修改 好别忘了开源
------解决方案--------------------------------------------------------
生成高质量缩略图通用函数
C# code
/// <summary>        /// 生成缩略图        /// </summary>        /// <param name=""originalImagePath"">源图路径(物理路径)</param>        /// <param name=""thumbnailPath"">缩略图路径(物理路径)</param>        /// <param name=""width"">缩略图宽度</param>        /// <param name=""height"">缩略图高度</param>        /// <param name=""mode"">生成缩略图的方式</param>            public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)        {            Image originalImage = Image.FromFile(originalImagePath);                        int towidth = width;            int toheight = height;                    int x = 0;            int y = 0;            int ow = originalImage.Width;            int oh = originalImage.Height;                    switch (mode)            {                        case ""HW""://指定高宽缩放(可能变形)                                    break;                case ""W""://指定宽,高按比例                                        toheight = originalImage.Height * width/originalImage.Width;                    break;                case ""H""://指定高,宽按比例                    towidth = originalImage.Width * height/originalImage.Height;                                        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;                    }                    break;                                    default :                    break;            }                            //新建一个bmp图片            Image bitmap = new System.Drawing.Bitmap(towidth,toheight);            //新建一个画板            Graphics g = System.Drawing.Graphics.FromImage(bitmap);            //设置高质量插值法            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;            //设置高质量,低速度呈现平滑程度            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;            //清空画布并以透明背景色填充            g.Clear(Color.Transparent);                    //在指定位置并且按指定大小绘制原图片的指定部分            g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),                new Rectangle(x, y, ow,oh),                GraphicsUnit.Pixel);            try            {                            //以jpg格式保存缩略图                bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);            }            catch(System.Exception e)            {                throw e;            }            finally            {                originalImage.Dispose();                bitmap.Dispose();                                        g.Dispose();            }        }