功能:实现图片上传缩略图等等
http://blog.csdn.net/gzy11/archive/2009/04/23/4103006.aspx
第一次写类库
见笑了 
肯定有许多不足之处
希望大家能够指正

解决方案 »

  1.   

    要是能做个DEMO提供下载就更好了
      

  2.   

    呵呵 等等啊 天天太忙了 只是大概写了下
    我参考的MSDN 和开源项目的一些技巧
      

  3.   

    写得挺规范,支持一下ps:为什么都喜欢在个人Id后面加个11?
      

  4.   

    Authentication 这个方法 老是觉得 out 泛型  和返回 BOOL型的用起来不是很顺手
    但目前没想到更好的方式来 写这个东西
      

  5.   

    是否把文件上传的部分做成抽象的或者是虚拟的,因为使用者不一定使用内置的上传控件,毕竟.net的上传空间局限性太大。或者分成2个控件,上传(包含检测和验证,只需返回 FileInfo 就可以了)和图片处理部分。如果有一个类似这样的方法ProcessImage(processtype,processvalue,precision),其中,processtype 可以是按比例或者是固定宽度或者固定高度,processvalue是processtype 的值,precision是图像的质量,可以类似jpg的从1~100.
    这样使用起来就会方便很多。呵呵~,只是随便说说,LZ做的很不错了,继续加油喔~
      

  6.   

    应该先做个在线DEMO,这样大家方便试用
      

  7.   

    这个饺子包的有点散啊
    1.你关注了太多原本不该关注的事情,像文件路径检测,提取后缀,生成文件名--------这些通用方法实际并不应该出现在这里,如果你要提供最好单独封到一个静态类,因为基本上这些方法的特性是与项目无关,与实例无关,可以随处调用,正好适合做成静态类
    2.你第一步那个抽象 struct imgSize 很好,但是你没有继续下去这样吧,我按照你这个抽象的思路,顺着写过去,写到那算哪,我就不做具体优化了(一步考虑下来,多少是有bug滴)public interface IThumbMode //计算缩略图接口
    {
        Image _originaImage { get; set; } //原始图片
        int width { get; }    //缩略图的高
        int height { get; }   //缩略图的宽
        void makeWH();  //计算缩略图的宽高
    }
     public class imgTools
    {
     
        public static Image makeThumbImg(IThumbMode mode)//类似抽象工厂,按情况也可以考虑模板或策略模式
        {
            var oimg = mode._originaImage;
            var res = oimg.GetThumbnailImage(mode.width, mode.height, null, new IntPtr());
            return res;
        }   
    }public class ThumbBySize:IThumbMode  //按文件size缩略
    {
        private long filesize;
        public LockSize(string path,long filesize) 
        {
            _originaImage = Image.FromFile(path);
            this.filesize = filesize;
            makeWH();
        }    #region IThumbMode 成员    public Image _originaImage
        {
            get;
            set;
        }    private int m_width;
        public int width
        {
            get { return m_width; }
        }    private int m_height;
        public int height
        {
            get { return m_height; }
        }    public void makeWH()
        {
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            _originaImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);        var osize = ms.Length;
            if (osize <= filesize)
                return;
            else
            {
                m_width = Convert.ToInt32(_originaImage.Width * filesize / osize);
                m_height = Convert.ToInt32(_originaImage.Height * filesize / osize);
            }                
        }    #endregion
         
      

  8.   

    不错,来学习。
    做好做个在线的DEMO,这样方便大家测试