PDA

View Full Version : کنترل سایز عکس



eshaghi
پنج شنبه 10 خرداد 1386, 17:53 عصر
با عرض سلام
من در مورد این مشکل جستجو کردم ولی حل نشد
عکس در سرور با اندازه های متفاوت آپلود شده است و ما در یک td یک image قرار دادیم اگر اندازه ارتفاع وپهنا را را*200 200پیکسل قرار دهیم عکسی که 100*150 است در اندازه 200*200 قرار می گیرد و کیفیت آن پایین می آید و اگر عکسی بزرگتر از این 200*200 را در آن قرار دهیم فشرده می شود و اگر برای کنترل تصویر width- heigth را در تگ html حذف کنیم برای عکسهایی با سایز کوچک مشکلی برای فرم به وجود نمی آید اما اگر سایز عکس بزرگتر از حد معمول باشد از پهنا اسکرول ایجاد می شود من باز هم در td مقادیر width- heigth را با پیکسل تعین کردم اما مشکلم حل نشد در ضمن من کدی برای این مشکل به زبان c# پیدا کردم و انرا به vb.net تبدیل کردم باز هم خطا داد



Dim thumb As System.Drawing.Image = System.Drawing.Image.FromFile(strpath)
Dim w As Integer = thumb.Width
Dim h As Integer = (110 * thumb.Height) / w
If h > 111 Then
w = (110 * thumb.Width) / thumb.Height
thumb = thumb.GetThumbnailImage(w, 110, New System.Drawing.Image.GetThumbnailImageAbort(Thumbn ailCallback), IntPtr.Zero)
Else
thumb = thumb.GetThumbnailImage(110, h, New System.Drawing.Image.GetThumbnailImageAbort(Thumbn ailCallback), IntPtr.Zero)
End If

با تشکر

jasadeghi
پنج شنبه 10 خرداد 1386, 18:07 عصر
سلام

با این کد برنامه می تونی بعد از اینکه عکس رو آپلود کردی برش مربعی بزنی. مانند عکسهای چیده شده در صفحه اول این سایت. www.axkhaneh.com (http://www.axkhaneh.com)




strFilename2 = Server.MapPath(upload_dir & "crop" & filename)
i = System.Drawing.Image.FromFile(strFilename)
Dim b AsNew System.Drawing.Bitmap(80, 80)
Dim g As Graphics = Graphics.FromImage(b)
g.Clear(Color.White)
'#
'# crop and resize!
'#
Dim unit = GraphicsUnit.Pixel
SelectCase i.Height
CaseIs = i.Width
Dim sheight = i.Height
Dim swidth = i.Width
Dim sy = 0
Dim sx = 0

Dim dx = 0
Dim dy = 0
Dim dw = 80
Dim dh = 80
g.DrawImage(i, New Rectangle(dx, dy, dw, dh), New Rectangle(sx, sy, swidth, sheight), unit)
CaseIs > i.Width
Dim sheight = i.Width
Dim swidth = i.Width
Dim sy = (i.Height - i.Width) / 2
Dim sx = 0

Dim dx = 0
Dim dy = 0
Dim dw = 80
Dim dh = 80
g.DrawImage(i, New Rectangle(dx, dy, dw, dh), New Rectangle(sx, sy, swidth, sheight), unit)
CaseIs < i.Width
Dim sheight = i.Height
Dim swidth = i.Height
Dim sy = 0
Dim sx = (i.Width - i.Height) / 2

Dim dx = 0
Dim dy = 0
Dim dw = 80
Dim dh = 80
g.DrawImage(i, New Rectangle(dx, dy, dw, dh), New Rectangle(sx, sy, swidth, sheight), unit)
EndSelect
b.Save(strFilename2, ImageFormat.Jpeg)
' tidy up
b.Dispose()
b = Nothing



با این کد عکسها در هر ابعادی که باشن به اندازه 80*80 پیکسل در میان که البته از وسط عکس این برش برداشته می شه و دیگه عکس دفرمه نمیشه.

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

موفق باشی

Behrouz_Rad
پنج شنبه 10 خرداد 1386, 18:17 عصر
با عرض سلام
من در مورد این مشکل جستجو کردم ولی حل نشد
عکس در سرور با اندازه های متفاوت آپلود شده است و ما در یک td یک image قرار دادیم اگر اندازه ارتفاع وپهنا را را*200 200پیکسل قرار دهیم عکسی که 100*150 است در اندازه 200*200 قرار می گیرد و کیفیت آن پایین می آید و اگر عکسی بزرگتر از این 200*200 را در آن قرار دهیم فشرده می شود و اگر برای کنترل تصویر width- heigth را در تگ html حذف کنیم برای عکسهایی با سایز کوچک مشکلی برای فرم به وجود نمی آید اما اگر سایز عکس بزرگتر از حد معمول باشد از پهنا اسکرول ایجاد می شود من باز هم در td مقادیر width- heigth را با پیکسل تعین کردم اما مشکلم حل نشد در ضمن من کدی برای این مشکل به زبان c# پیدا کردم و انرا به vb.net تبدیل کردم باز هم خطا داد



Dim thumb As System.Drawing.Image = System.Drawing.Image.FromFile(strpath)
Dim w As Integer = thumb.Width
Dim h As Integer = (110 * thumb.Height) / w
If h > 111 Then
w = (110 * thumb.Width) / thumb.Height
thumb = thumb.GetThumbnailImage(w, 110, New System.Drawing.Image.GetThumbnailImageAbort(Thumbn ailCallback), IntPtr.Zero)
Else
thumb = thumb.GetThumbnailImage(110, h, New System.Drawing.Image.GetThumbnailImageAbort(Thumbn ailCallback), IntPtr.Zero)
End If

با تشکر

1) کدها رو بین تگ [code] قرار بدید. (این کار رو واست انجام دادم)
2) افرادی که میگن فلان کار رو انجام دادیم و خطا دریافت کردیم توجه داشته باشند که کسی در اینجا از خطایی که شما با اون مواجه شدید خبر نداره! پس متن خطا رو هم ذکر کنید

این یک تذکر عمومی برای همه ی کاربران است و به شخص خاصی اصلاق نمی شود.

متشکرم.