جلوگيري از ورود عكس هاي بزرگ

سلام
من ميخوام بدون چطور ميشه كه اگر كسي يك عكس ميخواد بفرسته روي سايت براش ماكزسموم بزارم.
يعني مثلاْ ابعاد عكس هيچ وقت بيشتر از 300 در 300 پيكسل نشه.
اگر ابعاد عكسي كه ميفرسته كمتر بود عكس رو با همون ابعاد نمايش بده اما اگر مثلاْ 500 در 500 بود اون رو 300 در 300 نشون بده.
ممنونم.
 

hoom

Active Member
سلام

ميتونين از اين كد استفاده كنين. البته كپي رايتش مال خودمه :

فرض بر اينه كه شما عكس رو با يه فرم آپلود ميكنين و داده هاي اونو توي متغير contentType دارين :

کد:
 Dim IW, IH

 Const MAXIMAGEWIDTH = 300
 Const MAXIMAGEHEIGHT = 300

Function CheckFile()

 '// Read File Type
 Dim DocType
 DocType = UCase(contentType)

 Dim blnGIF
 Dim blnJPG

 blnGIF = (InStr(DocType, "GIF") > 0)
 blnJPG = (InStr(DocType, "JPEG") > 0)

 CheckFile = 0
 
 If (Not blnGIF) AND (Not blnJPG) Then
    CheckFile = 1
    Exit Function
 End If

 '// Bytes 4 and 5 of each GIF Files are Width and Height
 If blnGIF Then
   IW = CInt(AscW(Mid(fileData, 4, 1)))
   IH = CInt(AscW(Mid(fileData, 5, 1)))
   
   If (IW > MAXIMAGEWIDTH) Or (IH > MAXIMAGEHEIGHT) Then CheckFile = 2
   Exit Function
 End If

 '// Retrieving the JPG size is a little complexer
 '// We must search file till reach "FF D8 FF"(Hex)
 If blnJPG Then
   Dim lPos
   Const BUFFERSIZE = 65535

   lPos = 1

   Do
       If (bBuf(lPos) = &HFF And bBuf(lPos + 1) = &HD8 _
            And bBuf(lPos + 2) = &HFF) _
            Or (lPos >= BUFFERSIZE - 10) Then Exit Do

       '// Move our pointer up
       lPos = lPos + 1
   Loop

   lPos = lPos + 2
   If lPos >= BUFFERSIZE - 10 Then Exit Function

   Do
   
       Do
       '// Loop until we find the beginning of the next marker
           If bBuf(lPos) = &HFF And bBuf(lPos + 1) _
          <> &HFF Then Exit Do
           lPos = lPos + 1
           If lPos >= BUFFERSIZE - 10 Then Exit Function
       Loop
       
       '// Move pointer up
       lPos = lPos + 1
       
       Select Case bBuf(lPos)
           Case &HC0, &HC1, &HC2, &HC3, &HC5, &HC6, &HC7, &HC9, &HCA, &HCB, &HCD, &HCE, &HCF
           '// We found the right block
               Exit Do
       End Select
       
       '// Otherwise keep looking
       lPos = lPos + Mult(bBuf(lPos + 2), bBuf(lPos + 1))
       
       '// check for end of buffer
       If lPos >= BUFFERSIZE - 10 Then Exit Function
       
   Loop
   
   '// Get the height
   IH = Mult(bBuf(lPos + 5), bBuf(lPos + 4))
   
   '// Get the width
   IW = Mult(bBuf(lPos + 7), bBuf(lPos + 6))

   If (IW > MAXIMAGEWIDTH) Or (IH > MAXIMAGEHEIGHT) Then CheckFile = 2
   Exit Function
 End If

End Function

Function bBuf(lngPos)
   bBuf = (AscB(MidB(fileData, lngPos, 1)))
End Function

Function Mult(lsb, msb)
    Mult = lsb + (msb * CLng(256))
End Function
 
سلام از شما ممنونم كه زحمت كشيدين اين رو نوشتين ولي من دنباله يه راه ساده تر بودم.
و الا با سیستم اگر و اما ی asp میدونستم میشه نوشت.
 

parpar

Member
سلام
من فكر نميكنم راه كوتاه تري هم باشه اما اگه خودت بخواهي زحمتشو بكشي و قبل از فرستادن به سايت ماكزيمم كني عكستو
من پيشنهاد ميكنم مصطفي جون از برنامه digitalphoto resizer
استفاده كن
. با اين برنامه ميتوني هر عكسي رو با هر اندازه دلخواه كه خودت تنظيمش مي كني
در بياري مثلا به قول خودت 300 در 300.
يا هر اندازه كه مي خواهي وگرنه بايد همون راه طولاني بالا رو طي كني !
اميدوارم به دردتون بخوره .
 
parpar گفت:
سلام
من فكر نميكنم راه كوتاه تري هم باشه اما اگه خودت بخواهي زحمتشو بكشي و قبل از فرستادن به سايت ماكزيمم كني عكستو
من پيشنهاد ميكنم مصطفي جون از برنامه digitalphoto resizer
استفاده كن
. با اين برنامه ميتوني هر عكسي رو با هر اندازه دلخواه كه خودت تنظيمش مي كني
در بياري مثلا به قول خودت 300 در 300.
يا هر اندازه كه مي خواهي وگرنه بايد همون راه طولاني بالا رو طي كني !
اميدوارم به دردتون بخوره .

من فكر كنم شما اصلاْ منظوره من رو نفهميدي.
ميدونيد من ميخواستم توي پيغام قبليم يه چيزي بگم روم نشد چون ديدم اشتباه از خودمه ولي خوب الان ميگم.
ميخواستم بگم يه كد با جاوا اسكريپت باشه بعد ديدم من اين تاپيك رو توي بخش سرور سايد زدم ديگه روم نشد بگم. :oops:
 

hoom

Active Member
ببين اومدي و نسازي ها. بايد از اول ميگفتي يا جاوااسكريپت ميخواي

اين كد رو توي صفحه ات كپي كن

کد:
<Script Language="JavaScript">
function Image_OnLoad(Img)
{
var WI = 50;
var HI = 50;

if(Img.width  > WI) Img.width  = WI;
if(Img.height > HI) Img.height = HI;
}
</Script>

بعدش هر جاي كه خواستي عكس بذاري بايد با اين دستور باشه :

کد:
<Img Src="a.gif" OnLoad="Image_OnLoad(this);">

دوتا موضوع
اول اينكه من براي تست اندازه رو 50 دادم حالا هر چقدر ميخواي خودت استادي ميتوني عوضش كني
دوم اينكه خيلي مهمه كه Width و Hight كه معمولا بصورت پيش فرض توي همه Img تگ ها هستند اينجا نبايد باشن.

ارادتمند
 
ممنونم از هوم.
راستش من جاوا اصلاْ بلد نيستم همه كدهام جاوايي هم كه ميخوام از ايران جاوا اسكريپت كپي ميكنم. :oops:
اين كد رو كه نگاه كردم خيلي جالب بود ولي جاوا چقدر با اي اس پي فرق ميكنه ها :roll:
نميدونستم توي جاوا اسكريپت هم ميشه متغير نوشت. 8O
 

جدیدترین ارسال ها

بالا