That is the other code sample that David told me about but it calculates dimensions incorrectly for .GIF's and craps out on .JPG's totally.
At least the one I am using works for .GIFS Thanks Sam. Quoting Sam Thompson <[EMAIL PROTECTED]>: > http://p2p.wrox.com/archive/proasp_codeclinic/2000-04/8.asp > > HTH > Sam Thompson > ---------------------------------------------- > 2cs Communications Ltd > http://www.2cs.com > [EMAIL PROTECTED] > T: 01473 622263 > F: 01473 622515 > ----------------------------------------------- > ----- Original Message ----- > From: "Craig" <[EMAIL PROTECTED]> > To: "ActiveServerPages" <[EMAIL PROTECTED]> > Sent: Thursday, August 22, 2002 3:27 PM > Subject: Image Properties Difficult Question. > > > > I'm using the script that Tim Fletcher recommended yesterday. The one you > > told me about David (Penton) kept returning weird values for .GIF's and > > would not return anything for .JPG's. > > > > This script works perfectly for .GIF's (with a little modification I had > > to add) but craps out on .JPG's. Part of the returned page is this: > > > > ---------------------------------------------------------------------- > > watercooler_bubbling2_md_wht.gif 10/10/01 12:48:34 PM 4117 76 x 120 128 > > colors > > virtualwatercooler1502.gif 10/10/01 12:48:34 PM 3257 150 x 90 128 colors > > header.jpg 11/02/01 4:19:12 PM 92472 Microsoft VBScript runtime error > > '800a0005' > > > > Invalid procedure call or argument: 'asc' > > > > /imgsz.asp, line 91 > > ----------------------------------------------------------------------- > > > > It always errors out when it reaches the first .JPG in the folder. > > > > Here is the code below with line 91 marked. > > > > <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< > > > > <HTML> > > <HEAD><TITLE></TITLE> > > </HEAD> > > <BODY><% > > '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > > '::: ::: > > '::: This routine will attempt to identify any filespec passed ::: > > '::: as a graphic file (regardless of the extension). This will ::: > > '::: work with BMP, GIF, JPG and PNG files. ::: > > '::: ::: > > '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > > '::: Based on ideas presented by David Crowell ::: > > '::: (credit where due) ::: > > '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > > '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > > '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > > '::: blah blah blah blah blah blah blah blah blah blah blah blah ::: > > '::: blah blah blah blah blah blah blah blah blah blah blah blah ::: > > '::: blah blah Copyright *c* MM, Mike Shaffer blah blah ::: > > '::: blah blah ALL RIGHTS RESERVED WORLDWIDE blah blah ::: > > '::: blah blah Permission is granted to use this code blah blah ::: > > '::: blah blah in your projects, as long as this blah blah ::: > > '::: blah blah copyright notice is included blah blah ::: > > '::: blah blah blah blah blah blah blah blah blah blah blah blah ::: > > '::: blah blah blah blah blah blah blah blah blah blah blah blah ::: > > '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > > > > '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > > '::: ::: > > '::: This function gets a specified number of bytes from any ::: > > '::: file, starting at the offset (base 1) ::: > > '::: ::: > > '::: Passed: ::: > > '::: flnm => Filespec of file to read ::: > > '::: offset => Offset at which to start reading ::: > > '::: bytes => How many bytes to read ::: > > '::: ::: > > '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > > function GetBytes(flnm, offset, bytes) > > > > Dim objFSO > > Dim objFTemp > > Dim objTextStream > > Dim lngSize > > > > on error resume next > > > > Set objFSO = CreateObject("Scripting.FileSystemObject") > > > > ' First, we get the filesize > > Set objFTemp = objFSO.GetFile(flnm) > > lngSize = objFTemp.Size > > set objFTemp = nothing > > > > fsoForReading = 1 > > Set objTextStream = objFSO.OpenTextFile(flnm, fsoForReading) > > > > if offset > 0 then > > strBuff = objTextStream.Read(offset - 1) > > end if > > > > if bytes = -1 then ' Get All! > > > > GetBytes = objTextStream.Read(lngSize) 'ReadAll > > > > else > > > > GetBytes = objTextStream.Read(bytes) > > > > end if > > > > objTextStream.Close > > set objTextStream = nothing > > set objFSO = nothing > > > > end function > > > > > > '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > > '::: ::: > > '::: Functions to convert two bytes to a numeric value (long) ::: > > '::: (both little-endian and big-endian) ::: > > '::: ::: > > '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > > function lngConvert(strTemp) > > lngConvert = clng(asc(left(strTemp, 1)) + ((asc(right(strTemp, 1)) * > > 256))) > > end function > > > > function lngConvert2(strTemp) > > LINE 91 lngConvert2 = clng(asc(right(strTemp, 1)) + > > ((asc(left(strTemp, 1)) * 256))) > > end function > > > > > > '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > > '::: ::: > > '::: This function does most of the real work. It will attempt ::: > > '::: to read any file, regardless of the extension, and will ::: > > '::: identify if it is a graphical image. ::: > > '::: ::: > > '::: Passed: ::: > > '::: flnm => Filespec of file to read ::: > > '::: width => width of image ::: > > '::: height => height of image ::: > > '::: depth => color depth (in number of colors) ::: > > '::: strImageType=> type of image (e.g. GIF, BMP, etc.) ::: > > '::: ::: > > '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > > function gfxSpex(flnm, width, height, depth, strImageType) > > > > dim strPNG > > dim strGIF > > dim strBMP > > dim strType > > strType = "" > > strImageType = "(unknown)" > > > > gfxSpex = False > > > > strPNG = chr(137) & chr(80) & chr(78) > > strGIF = "GIF" > > strBMP = chr(66) & chr(77) > > > > strType = GetBytes(flnm, 0, 3) > > > > if strType = strGIF then ' is GIF > > > > strImageType = "GIF" > > Width = lngConvert(GetBytes(flnm, 7, 2)) > > Height = lngConvert(GetBytes(flnm, 9, 2)) > > Depth = 2 ^ ((asc(GetBytes(flnm, 11, 1)) and 7) + 1) > > gfxSpex = True > > > > else > > > > strBuff = GetBytes(flnm, 0, -1) ' Get all bytes from file > > lngSize = len(strBuff) > > flgFound = 0 > > > > strTarget = chr(255) & chr(216) & chr(255) > > flgFound = instr(strBuff, strTarget) > > > > if flgFound = 0 then > > exit function > > end if > > > > strImageType = "JPG" > > lngPos = flgFound + 2 > > ExitLoop = false > > > > do while ExitLoop = False and lngPos < lngSize > > > > do while asc(mid(strBuff, lngPos, 1)) = 255 and lngPos > > < lngSize > > lngPos = lngPos + 1 > > loop > > > > 'Response.Write "lngPos = " & lngPos & "<BR><BR>" > > 'Response.Write "strBuff = " & strBuff & "<BR><BR>" > > > > if asc(mid(strBuff, lngPos, 1)) < 192 or asc(mid(strBuff, > lngPos, 1)) > 195 then > > value = (mid(strBuff, lngPos + 1, 2)) > > 'Response.Write "value = " & value > > lngMarkerSize = lngConvert2(mid(strBuff, lngPos + 1, 2)) > > lngPos = lngPos + lngMarkerSize + 1 > > else > > ExitLoop = True > > end if > > > > loop > > ' > > if ExitLoop = False then > > > > Width = -1 > > Height = -1 > > Depth = -1 > > > > else > > > > Height = lngConvert2(mid(strBuff, lngPos + 4, 2)) > > Width = lngConvert2(mid(strBuff, lngPos + 6, 2)) > > Depth = 2 ^ (asc(mid(strBuff, lngPos + 8, 1)) * 8) > > gfxSpex = True > > > > end if > > > > end if > > > > end function > > > > > > > > '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > > '::: Test Harness ::: > > '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: > > > > ' To test, we'll just try to show all files with a .GIF extension in > the > > root of C: > > > > Set objFSO = CreateObject("Scripting.FileSystemObject") > > Set objF = objFSO.GetFolder("/usr/local/apache/internaldev/images") > > Set objFC = objF.Files > > > > response.write "<table border=""0"" cellpadding=""5"">" > > > > For Each f1 in objFC > > if instr(ucase(f1.Name), ".GIF") OR instr(ucase(f1.Name), ".JPG") > then > > response.write "<tr><td>" & f1.name & "</td><td>" & f1.DateCreated > & "</td><td>" & f1.Size & > > "</td><td>" > > > > if gfxSpex(f1.Path, w, h, c, strType) = true then > > > > 'my code added to convert resulting image widths and heights to > > something closely resembling pixel width > > 'As some values (apparently random) are correct in pixels to begin > > with, only those values that likely > > 'need converting, those > 2000, are subject to the routine > > if w > 2000 then > > w = w/257 > > end if > > > > if h > 2000 then > > h = h/257 > > end if > > > > > > response.write w & " x " & h & " " & c & " colors" > > else > > response.write " " > > end if > > > > response.write "</td></tr>" > > > > end if > > > > Next > > > > response.write "</table>" > > > > set objFC = nothing > > set objF = nothing > > set objFSO = nothing > > > > > > %> > > </BODY> > > </HTML> > > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > > > Any suggestions please? > > > > Thanks so much. > > > > > > > > > > --- > > You are currently subscribed to activeserverpages as: [EMAIL PROTECTED] > > To unsubscribe send a blank email to > %%email.unsub%% > > > > > --- > You are currently subscribed to activeserverpages as: > [EMAIL PROTECTED] > To unsubscribe send a blank email to > %%email.unsub%% > --- You are currently subscribed to activeserverpages as: [email protected] To unsubscribe send a blank email to [EMAIL PROTECTED]
