PDA

View Full Version : برای جلوگیری از کاهش کیفیت عکس , هنگام نوشتن متن بر روی اونو چی کار کنم؟



mojtaba-saleh
چهارشنبه 29 اسفند 1386, 20:22 عصر
سلام
من با این کد یک متن رو روی یک عکس می نویسم.
بعد از نوشته شدن متن, کیفیت عکس خیلی کم می شه.
آیا راهی برای جلوگیری از این اتفاق هست؟
من به عکس با کیفیت بالا نیاز دارم



Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Drawing2D
Imports System.Drawing.Text




Dim bitMapImage As Bitmap = New System.Drawing.Bitmap(Server.MapPath("Image.jpg"))
Dim graphicImage As Graphics = Graphics.FromImage(bitMapImage)
graphicImage.SmoothingMode = SmoothingMode.HighQuality
graphicImage.DrawString("Mante Payam", New Font("Tahoma", 10, FontStyle.Italic), SystemBrushes.ActiveCaptionText, New Point(100, 150))
'graphicImage.DrawEllipse(New Pen(Color.Red, 3), 10, 20, 150, 90)
Response.ContentType = "image/jpeg"
'Save the new image to the response output stream.
bitMapImage.Save(Response.OutputStream, ImageFormat.Jpeg)
graphicImage.Dispose()
bitMapImage.Dispose()

Chabok
چهارشنبه 29 اسفند 1386, 22:43 عصر
با سلام

سال نو مبارک

برای ساختن تصویر با بهترین کیفیت بصورت زیر عمل کنید .

ابتدا Codec را بصورت زیر تعریف کنید :


'Image Codecs For Good Quality
Dim Inf() = Drawing.Imaging.ImageCodecInfo.GetImageEncoders()
Dim EnParms As New Drawing.Imaging.EncoderParameters(1)
EnParms.Param(0) = New Drawing.Imaging.EncoderParameter(Drawing.Imaging.E ncoder.Quality, 100L)


سپس هنگام خروجی استریم کد را بصورت زیر تغییر دهید :


bitMapImage.Save(Response.OutputStream, Inf(1), EnParms)


موفق و پیروز باشید .

mojtaba-saleh
پنج شنبه 01 فروردین 1387, 18:05 عصر
سلام
عید بر شما و همه دوستان برنامه نویس مبارک باشه.

مشکلم با کیفیت حل شد. ولی با یه مشکل جدید روبرو شدم
وقتی بر روی عکس کلیک راست و Save رو میزنم اگه فرمت عکس Jpg باشه , عکس ذخیره نمی شه ولی اگه فرمت BMP باشه درست می شه.
مشکل از سیستم منه یا اشکالی در کد ها وجود داره ( با IE و Firefox تست کردم هر دو اینجوری بود)

Chabok
جمعه 02 فروردین 1387, 01:23 صبح
با سلام مجدد

این کد رو برای دادن نام به استریم به اول کدهاتون اضافه کنید . شاید حل بشه


Response.AddHeader("content-disposition", "attachment;filename=" & TimeString.Replace(":", "") & ".jpg")


با این کار فایلی که به سمت کلاینت ارسال می شود دارای نام هم می باشد که امیدوارم مشکلتون با این کار حل بشه (الان ساعت بدون : برای نام فایل استفاده شد)

در ضمن شاید این کدها هم به درد کار شما بخوره . هنگام شروع این دو خط کد را بنویسید :


Response.Clear()
Response.BufferOutput = True

و هنگام پایان دستورات نیز این دو خط را بنویسید :

Response.Flush()
Response.End()

موفق باشید . خدانگهدار

mojtaba-saleh
جمعه 02 فروردین 1387, 14:35 عصر
سلام
ممنون از لطفتون.
مشکلم حل شد.