amrssh2008
جمعه 12 مهر 1387, 18:05 عصر
با سلام خدمت دوستان گرامی
بنده در طراحی و ایجاد یه برنامه تحت وب به مشکلی برخورد کردم !
این برنامه قراره آدرس یک عکس رو بگیره و اون رو در ابعاد مشخص ببره و عکس نهایی رو روی سرور ذخیره کنه و ...
من این رو نوشتم و کاملا درست روی لوکال اجرا میشه و در لوکال هیچ مشکلی نداره ، حتی روی یه هاست مجانی هم تست کرده بودم و کامل جواب گرفتم .
اما مشکل اینجاست که الان روی یه هاست آپلود کردم ، و هنگام ذخیره کردن عکس نهایی ، به ارور در GDI برخوردم ، توی گوگل ، این سایت و خیلی سایتهای دیگه سرچ کردم و متوجه شدم عده زیادی مشکل من رو دارند و راه حلهایی بود از قبیل آزاد کردن فضای اختصاص یافته به Bitmap های استفاده شده از طریق Dispose کردن اونها و ... اما باز هم جواب نگرفتم !!
من کد تابعی که برای اینکار نوشتم رو اینجا قرار میدم و خطی که اررور داره رو Bold میکنم :
Private Function Crop(ByVal mapadr As String, ByVal x As Int32, ByVal y As Int32, ByVal width As Int32, ByVal height As Int32) As System.Drawing.Bitmap
Dim img As System.Drawing.Bitmap = System.Drawing.Image.FromFile(Server.MapPath(mapad r))
Dim Cropped As New System.Drawing.Bitmap(width, height)
Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(Cropped)
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQu ality
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQua lityBicubic
Dim rect As New System.Drawing.Rectangle(0, 0, width, height)
g.DrawImage(img, rect, x, y, width, height, System.Drawing.GraphicsUnit.Pixel)
img.Dispose()
g.Dispose()
Cropped.Save(Server.MapPath("/images/sum.jpg"))
Return Cropped
End Function
و این هم متن ارور :
ExternalException (0x80004005): A generic error occurred in GDI+.]
System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams) +377518
System.Drawing.Image.Save(String filename, ImageFormat format) +69
System.Drawing.Image.Save(String filename) +25
_Default.Page_Load(Object sender, EventArgs e) in
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
بسیار بسیار ممنون میشم اگه از دوستان و اساتید کسی راه حل این مشکل رو بفرمایند چون موضوع خیلی برام مهم هست
بنده در طراحی و ایجاد یه برنامه تحت وب به مشکلی برخورد کردم !
این برنامه قراره آدرس یک عکس رو بگیره و اون رو در ابعاد مشخص ببره و عکس نهایی رو روی سرور ذخیره کنه و ...
من این رو نوشتم و کاملا درست روی لوکال اجرا میشه و در لوکال هیچ مشکلی نداره ، حتی روی یه هاست مجانی هم تست کرده بودم و کامل جواب گرفتم .
اما مشکل اینجاست که الان روی یه هاست آپلود کردم ، و هنگام ذخیره کردن عکس نهایی ، به ارور در GDI برخوردم ، توی گوگل ، این سایت و خیلی سایتهای دیگه سرچ کردم و متوجه شدم عده زیادی مشکل من رو دارند و راه حلهایی بود از قبیل آزاد کردن فضای اختصاص یافته به Bitmap های استفاده شده از طریق Dispose کردن اونها و ... اما باز هم جواب نگرفتم !!
من کد تابعی که برای اینکار نوشتم رو اینجا قرار میدم و خطی که اررور داره رو Bold میکنم :
Private Function Crop(ByVal mapadr As String, ByVal x As Int32, ByVal y As Int32, ByVal width As Int32, ByVal height As Int32) As System.Drawing.Bitmap
Dim img As System.Drawing.Bitmap = System.Drawing.Image.FromFile(Server.MapPath(mapad r))
Dim Cropped As New System.Drawing.Bitmap(width, height)
Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(Cropped)
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQu ality
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQua lityBicubic
Dim rect As New System.Drawing.Rectangle(0, 0, width, height)
g.DrawImage(img, rect, x, y, width, height, System.Drawing.GraphicsUnit.Pixel)
img.Dispose()
g.Dispose()
Cropped.Save(Server.MapPath("/images/sum.jpg"))
Return Cropped
End Function
و این هم متن ارور :
ExternalException (0x80004005): A generic error occurred in GDI+.]
System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams) +377518
System.Drawing.Image.Save(String filename, ImageFormat format) +69
System.Drawing.Image.Save(String filename) +25
_Default.Page_Load(Object sender, EventArgs e) in
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
بسیار بسیار ممنون میشم اگه از دوستان و اساتید کسی راه حل این مشکل رو بفرمایند چون موضوع خیلی برام مهم هست