由于工作需要,要让用户上传的头像可以按自己想要的区块进行裁减。
该怎么做呢?
帮帮忙!

解决方案 »

  1.   


    private void Page_Load(object sender, System.EventArgs e)
            {
                ImgReduceCutOut(100,120,"1.jpg","2.jpg");
            }
            /// <summary>
            /// 缩小裁剪图片
            /// </summary>
            /// <param name="int_Width">要缩小裁剪图片宽度</param>
            /// <param name="int_Height">要缩小裁剪图片长度</param>
            /// <param name="input_ImgUrl">要处理图片路径</param>
            /// <param name="out_ImgUrl">处理完毕图片路径</param>
            public void ImgReduceCutOut(int int_Width,int int_Height,string input_ImgUrl,string out_ImgUrl)
            {
                // ===上传标准图大小===
                int int_Standard_Width=160;
                int int_Standard_Height=160;            int Reduce_Width=0; // 缩小的宽度
                int Reduce_Height=0; // 缩小的高度
                int CutOut_Width=0; // 裁剪的宽度
                int CutOut_Height=0; // 裁剪的高度
                int level = 100; //缩略图的质量 1-100的范围
                
                // ===获得缩小,裁剪大小===
                if (int_Standard_Height*int_Width/int_Standard_Width>int_Height) 
                {
                    Reduce_Width=int_Width;
                    Reduce_Height=int_Standard_Height*int_Width/int_Standard_Width;
                    CutOut_Width=int_Width;
                    CutOut_Height=int_Height;
                }
                else if (int_Standard_Height*int_Width/int_Standard_Width<int_Height)
                {
                    Reduce_Width=int_Standard_Width*int_Height/int_Standard_Height;
                    Reduce_Height=int_Height;
                    CutOut_Width=int_Width;
                    CutOut_Height=int_Height;
                }
                else
                {
                    Reduce_Width=int_Width;
                    Reduce_Height=int_Height;
                    CutOut_Width=int_Width;
                    CutOut_Height=int_Height;
                }            // ===通过连接创建Image对象===
                System.Drawing.Image oldimage = System.Drawing.Image.FromFile(Server.MapPath(input_ImgUrl));            // ===缩小图片===
                System.Drawing.Image thumbnailImage = oldimage.GetThumbnailImage(Reduce_Width, Reduce_Height,new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);
                Bitmap bm=new Bitmap(thumbnailImage);             // ===处理JPG质量的函数===
                ImageCodecInfo[] codecs=ImageCodecInfo.GetImageEncoders(); 
                ImageCodecInfo ici=null;
                foreach(ImageCodecInfo codec in codecs)
                {
                    if(codec.MimeType=="image/jpeg")
                        ici=codec;
                }
                EncoderParameters ep=new EncoderParameters();
                ep.Param[0]=new EncoderParameter(Encoder.Quality,(long)level);
                
                bm.Save(Server.MapPath("2.jpg"),ici,ep);            // ===裁剪图片===
                Rectangle cloneRect = new Rectangle(0, 0, CutOut_Width, CutOut_Height);
                PixelFormat format = bm.PixelFormat;
                Bitmap cloneBitmap = bm.Clone(cloneRect, format);            // ===保存图片===
                cloneBitmap.Save(Server.MapPath(out_ImgUrl),ici,ep);
            }        public bool ThumbnailCallback()
            {
                return false;
            }
      

  2.   

    http://hi.baidu.com/wyzwyzwyz/blog/item/fdaa7c252696546c35a80f6c.html
    http://kb.cnblogs.com/page/47074/2/
      

  3.   

    Jquery+ASP.NET 实现上传头像剪裁 
      

  4.   

    看到上面的例子,他是直接赋图片给img src的
    要结合图片预览怎么做呢
    当选择图片时,图片可以显示在那快裁减的框
    然后进行裁减!
      

  5.   

    假设1.jpg就是原图像,在客户端将要裁剪的区域的左上角和右下角位置保存下来pt1和pt2,然后将图片完整上传到服务器,不要裁剪在调用时候直接如下
    <div style="background-image:url(1.jpg);width:200px;height:150px; background-position: 50px 50px;"></div>width是pt2.x-pt1.x绝对值
    height是pt2.y-pt1.y绝对值
    background-position:只用pt1.x和pt1.y就是这样子,大概
      

  6.   

    如果要缩放图像的话,这样修改下;<div style="width:200px;height:150px; overflow:hidden;" >
    <img src="1.jpg" style="width:300px;height:250px; position:relative; left:-50px;top:-50px" />
    </div>
      

  7.   

    http://www.codesoso.com/code/Image-Corp-Scale-Control.aspx
    这个控件实现与.NET1.1环境中,作为一个ASP.NET控件,它可以允许用户在客户端上传一幅图像到服务器上,并在浏览器中直接对图像进行裁剪、缩放、修改成为一个web可用的图像。
     阿捷