我需要把一张GIF动画用程序缩放和裁切啊,前提是不能失真,图片质量不能变
         这样的程序是不是很复杂啊, 

解决方案 »

  1.   

    不失真的放大位图,有这个本事,我不干这行了。说不定什么FBI,CIA,KGB……
      

  2.   

    还有就是图片缩出来以后不能是假的,就是名称虽然叫GIF,但是真实格式却改变了
      

  3.   

     System.Drawing.Image image;
                        using (FileStream stream = new FileStream(strFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
                        {
                            image = System.Drawing.Image.FromStream(stream);
                            double douH = Convert.ToDouble(image.Height);
                            double douW = Convert.ToDouble(image.Width);
                            double douFlag = (double)200 / (double)150;                        // imageのwidth : 200    height : 150
                            if ((douW / douH > douFlag) && douW > 200)
                            {
                                image = image.GetThumbnailImage(200, ConvertUtility.ToInt(200 * douH / douW), null, IntPtr.Zero);
                            }
                            else if ((douW / douH <= douFlag) && douH > 150)
                            {
                                image = image.GetThumbnailImage(ConvertUtility.ToInt(150 * douW / douH), 150, null, IntPtr.Zero);
                            }
                            image.Save(strPath + "s_" + fileName);
                            stream.Close();
                        }
    这个是缩得,最大大小200长150宽,按比例缩。
      

  4.   

    如果是gif的普通动画图片 缩放应该不是有失真和任何质量问题 甚至你直接改变他的大小就可以
    详细查看Image类 用drawImage重绘即可
      

  5.   

    从算法上讲,一点不失真是不可能的,
    GIF没做过,位图BMP的缩放,一般都用插值算法
      

  6.   


    我是楼主,可能开始表达的不清晰,说白了就是一张普通的GIF动画,比如280*288的,我把他等比缩成240*144,需要不失真的,
                            其实我已经找到此算法,但是他这种算法做出来以后图片容量太大,用的是全局调色板
                       所以我现在来这寻求一种比较精简的算法。
      

  7.   

    http://www.cnblogs.com/jillzhang/archive/2008/05/12/1128263.htmljillzhang兄弟的GifUtility 能帮上你的忙.
      

  8.   

    我用的就是楼上这位仁兄的。。jillzhang兄弟的GifUtility算法过于复杂,图片缩出来之后容量变大了,他用的是全局调色板