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 "&nbsp;"
>        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 PROTECTED]

Reply via email to