简体   繁体   English

通过文本框使用ASP.NET C#旋转图像

[英]Rotate image using asp.net c# through textbox

how to rotate image through put in angle value in textbox using graphics in asp.net c#? 如何通过使用asp.net c#中的图形在文本框中输入角度值来旋转图像? I take a textbox and image and button.I want to give value in angle in textbox and image will be rotate according to given value.so,i can only doing a simple button_click event ,but it is not proper for textbox.so,give simple code ... 我带一个文本框和图像和按钮。我想在文本框中输入角度值,图像将根据给定的值旋转。所以,我只能做一个简单的button_click事件,但不适用于textbox.so,给定简单的代码...

protected void Button2_Click(object sender, EventArgs e)
    {
        string path = Server.MapPath(Image1.ImageUrl);

        ////create an image object from the image in that path
        System.Drawing.Image img = System.Drawing.Image.FromFile(path);

        ////rotate the image
       img.RotateFlip(RotateFlipType.Rotate90FlipXY);

        ////save the image out to the file
        img.Save(path);

        ////release image file
        img.Dispose();

    } 

Following code save the rotated image into newfile.png in current project folder path 以下代码将旋转后的图像保存到当前项目文件夹路径中的newfile.png中

Try This: 尝试这个:

 protected void Button2_Click1(object sender, EventArgs e)
    {

         string path = Server.MapPath(Image1.ImageUrl);
         string newpath =Server.MapPath(@"~/filename.png");

        ////create an image object from the image in that path
        System.Drawing.Bitmap img =new  System.Drawing.Bitmap(path);      

        Bitmap map = RotateBitmap(COnvert.ToSingle(textBox1.Text), img);
        map.Save(newpath);




        ////release image file
        img.Dispose();
    }
     public Bitmap RotateBitmap(float Angle, Bitmap bm_in)
    {
        try
        {
            float wid = bm_in.Width;
            float hgt = bm_in.Height;
            Point[] corners = { new Point(0, 0), new Point(int.Parse(wid.ToString()), 0), new Point(0, int.Parse(hgt.ToString())), new Point(int.Parse(wid.ToString()), int.Parse(hgt.ToString())) };
            int cx = int.Parse(wid.ToString()) / 2;
            int cy = int.Parse(hgt.ToString()) / 2;
            long i;
            for (i = 0; i <= 3; i++)
            {
                corners[i].X -= Convert.ToInt32(cx.ToString());
                corners[i].Y -= Convert.ToInt32(cy.ToString());
            }


            float theta = (float)(Angle * Math.PI / 180.0);
            float sin_theta = (float)Math.Sin(theta);
            float cos_theta = (float)Math.Cos(theta);
            float X;
            float Y;
            for (i = 0; i <= 3; i++)
            {
                X = corners[i].X;
                Y = corners[i].Y;
                corners[i].X = (int)(X * cos_theta + Y * sin_theta);
                corners[i].Y = (int)(-X * sin_theta + Y * cos_theta);
            }


            float xmin = corners[0].X;
            float ymin = corners[0].Y;
            for (i = 1; i <= 3; i++)
            {
                if (xmin > corners[i].X)
                    xmin = corners[i].X;
                if (ymin > corners[i].Y)
                    ymin = corners[i].Y;
            }
            for (i = 0; i <= 3; i++)
            {
                corners[i].X -= int.Parse(xmin.ToString());
                corners[i].Y -= int.Parse(ymin.ToString());
            }


            Bitmap bm_out = new Bitmap((int)(-2 * xmin), (int)(-2 * ymin));
            Graphics gr_out = Graphics.FromImage(bm_out);
            // ERROR: Not supported in C#: ReDimStatement
            Point[] temp = new Point[3];
            if (corners != null)
            {
                Array.Copy(corners, temp, Math.Min(corners.Length, temp.Length));
            }
            corners = temp;
            gr_out.DrawImage(bm_in, corners);
            return bm_out;
        }
        catch (Exception ex)
        {
            string s = ex.Message;
            return bm_in;
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM