Hi i am using this example http://efreedom.com/Question/1-1758762/Create-Image-Rounded-Corners-CSharp to round the corners of images, the problem i have is when i save the image because i need to overwite the exsiting image i am getting a GDI error.
RoundedImage.Save(path); //THIS IS WHERE THE ERROR OCCURS
The stack trace is below the error occurs on RoundedImage.Save(path)
is this because i am editing the image then overwriting the same image?
the path currently = "C:\development\cms\uploaded_assets\images\fd172f4a-86e8-44df-a8d1-c10e7c42acf8_orig.jpg"
at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)
at System.Drawing.Image.Save(String filename, ImageFormat format)
at System.Drawing.Image.Save(String filename)
at cms._template.userControls.assets.EditImageControl.roundImageCorners() in C:\development\craigs_dev\cms\cms\_template\userControls\assets\EditImageControl.ascx.cs:line 468
at cms._template.userControls.assets.EditImageControl.btnRoundCornersAction_Click(Object sender, EventArgs e) in C:\development\craigs_dev\cms\cms\_template\userControls\assets\EditImageControl.ascx.cs:line 544
at System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e)
at System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument)
at System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
craigmacca24
Member
56 Points
183 Posts
save image error in gdi
Jan 28, 2011 01:29 PM|LINK
Hi i am using this example http://efreedom.com/Question/1-1758762/Create-Image-Rounded-Corners-CSharp to round the corners of images, the problem i have is when i save the image because i need to overwite the exsiting image i am getting a GDI error.
any ideas how i can fix this?
string directory = Server.MapPath("/uploaded_assets/images/");
string path = string.Format("{0}{1}", directory, selectedImageFile);
System.Drawing.Image objImage = System.Drawing.Image.FromFile(path);//From File
int CornerRadius = 10;
Color BackgroundColor = Color.White;
CornerRadius *= 2;
Bitmap RoundedImage = new Bitmap(objImage.Width, objImage.Height);
Graphics g = Graphics.FromImage(RoundedImage);
g.Clear(BackgroundColor);
g.SmoothingMode = SmoothingMode.AntiAlias;
Brush brush = new TextureBrush(objImage);
GraphicsPath gp = new GraphicsPath();
gp.AddArc(0, 0, CornerRadius, CornerRadius, 180, 90);
gp.AddArc(0 + RoundedImage.Width - CornerRadius, 0, CornerRadius, CornerRadius, 270, 90);
gp.AddArc(0 + RoundedImage.Width - CornerRadius, 0 + RoundedImage.Height - CornerRadius, CornerRadius, CornerRadius, 0, 90);
gp.AddArc(0, 0 + RoundedImage.Height - CornerRadius, CornerRadius, CornerRadius, 90, 90);
g.FillPath(brush, gp);
objImage.Dispose();
RoundedImage.Save(path); //THIS IS WHERE THE ERROR OCCURS
The stack trace is below the error occurs on RoundedImage.Save(path)
is this because i am editing the image then overwriting the same image?
the path currently = "C:\development\cms\uploaded_assets\images\fd172f4a-86e8-44df-a8d1-c10e7c42acf8_orig.jpg"
at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)
at System.Drawing.Image.Save(String filename, ImageFormat format)
at System.Drawing.Image.Save(String filename)
at cms._template.userControls.assets.EditImageControl.roundImageCorners() in C:\development\craigs_dev\cms\cms\_template\userControls\assets\EditImageControl.ascx.cs:line 468
at cms._template.userControls.assets.EditImageControl.btnRoundCornersAction_Click(Object sender, EventArgs e) in C:\development\craigs_dev\cms\cms\_template\userControls\assets\EditImageControl.ascx.cs:line 544
at System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e)
at System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument)
at System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
qwe123kids
All-Star
48619 Points
7957 Posts
MVP
Re: save image error in gdi
Jan 28, 2011 01:41 PM|LINK
Hi,
Have You Given IIS User Proper Rights?
Can Put Complete Error Stack..
Avinash Tiwari
Remember to click “Mark as Answer” on the post, if it helps you.
craigmacca24
Member
56 Points
183 Posts
Re: save image error in gdi
Jan 28, 2011 03:22 PM|LINK
yes i have a create and delete image which is working fine.
qwe123kids
All-Star
48619 Points
7957 Posts
MVP
Re: save image error in gdi
Jan 28, 2011 04:51 PM|LINK
Seems u are trying to Update Your Image Without Releasing it from Edit Mode.
means When u try to Save Image You U Still Using it.
Avinash Tiwari
Remember to click “Mark as Answer” on the post, if it helps you.
craigmacca24
Member
56 Points
183 Posts
Re: save image error in gdi
Feb 02, 2011 10:15 AM|LINK
ok thanks but how do i release it from edit mode? as you can see below i am displosing the image before i save??
System.Drawing.Image objImage = System.Drawing.Image.FromFile(path);//From File
int CornerRadius = int.Parse(ddlRoundCornersRadius.SelectedValue);
Color BackgroundColor = Color.White;
CornerRadius *= 2;
Bitmap RoundedImage = new Bitmap(objImage.Width, objImage.Height);
Graphics g = Graphics.FromImage(RoundedImage);
g.Clear(BackgroundColor);
g.SmoothingMode = SmoothingMode.AntiAlias;
Brush brush = new TextureBrush(objImage);
GraphicsPath gp = new GraphicsPath();
gp.AddArc(0, 0, CornerRadius, CornerRadius, 180, 90);
gp.AddArc(0 + RoundedImage.Width - CornerRadius, 0, CornerRadius, CornerRadius, 270, 90);
gp.AddArc(0 + RoundedImage.Width - CornerRadius, 0 + RoundedImage.Height - CornerRadius, CornerRadius, CornerRadius, 0, 90);
gp.AddArc(0, 0 + RoundedImage.Height - CornerRadius, CornerRadius, CornerRadius, 90, 90);
g.FillPath(brush, gp);
objImage.Dispose();
RoundedImage.Save(path);