Thanks for reply
code is as per bellow
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Text;
using System.Drawing.Drawing2D;
public partial class rotateimage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
String imagepath = pathstr() + "Images\\sellimage.jpg";
Bitmap bmp_conv_dpi = new Bitmap(imagepath);
System.Drawing.Image i =
Rotateimage((System.Drawing.Image)bmp_conv_dpi,double.Parse(
queryStringValue(Request,"angle",
0)));
MemoryStream ms = new MemoryStream();
i.Save(ms, ImageFormat.Png);
Response.ContentType = "image/PNG";
ms.WriteTo(Response.OutputStream);
Response.End();
}
public string pathstr()
{
return System.AppDomain.CurrentDomain.BaseDirectory;
}
public static System.Drawing.Image
Rotateimage(System.Drawing.Image image, double angle)
{
if (image == null)
{
throw new ArgumentNullException("image");
}
float oldWidth = (float)image.Width;
float oldHeight = (float)image.Height;
// Ensure angle is [0, 360)
angle = angle % 360f;
if (angle < 0.0)
{
angle += 360f;
}
PointF[] corners = new PointF[4];
// corners, clockwise from upper left
// corners[0] is origin
corners[1].X = oldWidth;
corners[2].X = oldWidth;
corners[2].Y = oldHeight;
corners[3].Y = oldHeight;
// rotate about origin
Matrix m = new Matrix();
m.Rotate((float)angle);
m.TransformPoints(corners);
// compute bounds of transformed corners from largest and
smallest x and y values
double maxX = Double.MinValue;
double maxY = Double.MinValue;
double minX = Double.MaxValue;
double minY = Double.MaxValue;
foreach (PointF p in corners)
{
maxX = Math.Max(maxX, p.X);
minX = Math.Min(minX, p.X);
maxY = Math.Max(maxY, p.Y);
minY = Math.Min(minY, p.Y);
}
double newWidth = Math.Ceiling(maxX - minX);
double newHeight = Math.Ceiling(maxY - minY);
Bitmap rotatedBmp = new Bitmap((int)newWidth, (int)newHeight);
using (Graphics g = Graphics.FromImage(rotatedBmp))
{
// center of new image
PointF center = new PointF((float)(newWidth / 2), (float)
(newHeight / 2));
g.SmoothingMode =
System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
// position to draw old image to center it in new one
PointF position = new PointF(center.X - oldWidth / 2,
center.Y - oldHeight / 2);
// rotate about center and draw
m.Reset();
m.RotateAt((float)angle, center);
g.Transform = m;
g.DrawImage(image, position);
m.Reset();
g.InterpolationMode =
System.Drawing.Drawing2D.InterpolationMode.Bicubic;
}
return rotatedBmp;
}
public static string queryStringValue(HttpRequest wr, string key,
object defaultValue)
{
try
{
return wr.QueryString[key].ToString();
}
catch (Exception)
{ }
return defaultValue.ToString();
}
}
On Feb 11, 4:27 pm, Jamie Fraser <[email protected]> wrote:
> The effect you are seeing is image distortion due to the square/rectangular
> pixels on a display screen being unable to display a straight edge when the
> edge is non-orthogonal with the actual display grid.
>
> You need to implement anti-aliasing of some sort to reduce this effect.
>
> If you need any help specific to implementing anti-aliasing in your
> solution, post the code you have so far.
>
> On Thu, Feb 11, 2010 at 6:50 AM, [email protected]
> <[email protected]>wrote:
>
> > not it is not spam , it's urgent to solve
>
> > On Feb 10, 5:49 pm, Processor Devil <[email protected]> wrote:
> > > spam?
>
> > > 2010/2/10 [email protected] <[email protected]>
>
> > > > please check url below and find how the image distorts at edges on
> > > > giving rotation angles like 5,10,50 etc. however the edges are smooth
> > > > and crisp on 45 degree
>
> > > >http://cybersurf.in/rotationtesting.aspx
>
> > > > please provide solution ASAP.