RT

解决方案 »

  1.   

    Image类下有GetThunmbnailImage方法.
      

  2.   

    GetThunmbnailImage只有一个重载  容易变型
      

  3.   

    参考    public void SplitTiffImage(string fileServerPath)
        {
            string currentMuilPageTiffName = Path.GetFileName(fileServerPath);
            Bitmap image = new Bitmap(fileServerPath);        try
            {
                Guid objGuid = image.FrameDimensionsList[0];
                FrameDimension objDimension = new FrameDimension(objGuid);            //Saves every frame as a separate file.
                System.Drawing.Imaging.Encoder enc = System.Drawing.Imaging.Encoder.Compression;
                int curFrame = 0;
                for (int i = 0; i < muilPageNum; i++)
                {
                    image.SelectActiveFrame(objDimension, curFrame);
                    EncoderParameters ep = new EncoderParameters(1);
                    ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.CompressionLZW);
                    ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();
                    for (int j = 0; j < encoders.Length; j++)
                    {
                        if (encoders[j].MimeType == "image/gif")
                        {
                            info = encoders[j];
                        }
                    }                //Save the master bitmap
                    string onePageTiffName = string.Format("{0}{1}.GIF", currentMuilPageTiffName, i.ToString());
                    string jpgFileName = onePageTiffName.Replace(".TIF", ".JPG");                createJpgFileString(jpgFileName, image.Width, image.Height);                string onePageTiffphyPath = "img_in/Img_OnePageTiff/" + onePageTiffName;
                    string onePageTiffServerPath = Server.MapPath(onePageTiffphyPath);                image.Save(onePageTiffServerPath, info, ep);                curFrame++;
                }
                image.Dispose();
                System.GC.SuppressFinalize(image);
            }
            catch (Exception)
            {
                throw;
            }    }
      

  4.   

    给你一个自己写的用的缩略图生成方法,默认使用的最高质量配置。
    取得 Image 保存成 gif 即可。        /// <summary>
            /// by vengair
            /// </summary>
            /// <param name="image"></param>
            /// <param name="percentage"></param>
            /// <returns></returns>
            private static Image GenerateThumbnailImage(Image image, int percentage)
            {
                Bitmap myBitmap = new Bitmap((int)(image.Width * percentage / 100), (int)(image.Height * percentage / 100));
                Graphics myGraphics = Graphics.FromImage(myBitmap);            // 绘制边框和背景
                myGraphics.FillRectangle(Brushes.Gray, new Rectangle(0, 0, myBitmap.Width, myBitmap.Height));
                myGraphics.FillRectangle(Brushes.White, new Rectangle(1, 1, myBitmap.Width - 2, myBitmap.Height - 2));            myGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                myGraphics.SmoothingMode = SmoothingMode.HighQuality;
                myGraphics.DrawImage(image, new Rectangle(2, 2, myBitmap.Width - 4, myBitmap.Height - 4));
                myGraphics.Dispose();            return (Image)myBitmap;
            }
      

  5.   

    很简单,新建一个100*100的位图,然后把原图以100*50画在上面,保存为Gif格式即可~
      

  6.   

    Bitmap bmp = new Bitmap(100,100);
    Bitmap bmpSrc = new Bitmap("C:\\src.Gif");
    //得到等比压缩的宽高
    int w = 100,h=100;
    if (bmpSrc.Width>bmpSrc.Height)
    {
        w = 100;
        h = bmpSrc.Height * 100 / bmpSrc.Width;
    }
    else
    {
        h = 100;
        w = bmpSrc.Width * 100 / bmpSrc.Height;
    }
    Graphics g = Graphics.FromImage(bmp);
    g.FillRectangle(new SolidBrush(Color.White),0,0,bmp.Width,bmp.Height);
    g.DrawImage(bmpSrc,(100-w)/2,(100-h)/2,w,h);
    g.Dispose();
    bmp.Save("C:\\dest.Gif",ImageFormat.Gif);
    bmp.Dispose();
    bmpSrc.Dispose();
      

  7.   

    需要
    using System.Drawing;
    using System.Drawing.Imaging;
      

  8.   

    //忘记设质量了,加上Bitmap bmp = new Bitmap(100,100);
    Bitmap bmpSrc = new Bitmap("C:\\src.Gif");
    //得到等比压缩的宽高
    int w = 100,h=100;
    if (bmpSrc.Width>bmpSrc.Height)
    {
        w = 100;
        h = bmpSrc.Height * 100 / bmpSrc.Width;
    }
    else
    {
        h = 100;
        w = bmpSrc.Width * 100 / bmpSrc.Height;
    }
    Graphics g = Graphics.FromImage(bmp);
    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    g.FillRectangle(new SolidBrush(Color.White),0,0,bmp.Width,bmp.Height);
    g.DrawImage(bmpSrc,(100-w)/2,(100-h)/2,w,h);
    g.Dispose();
    bmp.Save("C:\\dest.Gif",ImageFormat.Gif);
    bmp.Dispose();
    bmpSrc.Dispose();
      

  9.   

    viena太牛了你能回这么多层是因为三星还是利用csdn的bug?
      

  10.   

    好久不来CSDN
    现在能连续回复那么多层了么?
      

  11.   

    .net生成的Gif损失很大,一般建议用jpg的