9 messaggi dal 06 marzo 2004
Salve a tutti, ho preparato una funzionalità nel mio sito (sempre in locale) in cui gli utenti hanno la possibilità di fare l'upload delle foto sul sito. Questa cosa fa uso di una funzionalità installata imagesize.dll per calcolare larghezza e altezza della foto. Avevo trovato un servizio di hosting ad un prezzo abbastanza accessibile ma sui cui non è possibile installare il componente (giustamente).
Come posso fare? Esistono servizi di hosting su cui la dl è installata oppure come posso fare per risolvere il problema senza tale componente.

Il problema in pratica è calcolare larghezza e lunghezza di una foto sul server senza componenti aggiunti.

Grazie mille un saluto a tutti
35 messaggi dal 27 agosto 2003
Certo che puoi.

All'interno del file
<%
Class ImageSize

Public Dimensioni(2)
Public bolIsImage, strPathFile, strImageType

Private Sub Class_Initialize()

End Sub

Private Sub Class_Terminate()

End Sub

Public Property Get ImageName
ImageName = doName(ImageFile)
End Property

Public Property Get ImageFile
ImageFile = strPathFile
End Property

Public Property Let ImageFile(strImageFile)
strPathFile = strImageFile
gfxSpex(strPathFile)
End Property

Public Property Get ImageWidth
ImageWidth = Dimensioni(1)
End Property

Public Property Get ImageHeight
ImageHeight = Dimensioni(0)
End Property

Public Property Get ImageDepth
ImageDepth = Dimensioni(2)
End Property

Public Property Get ImageType
ImageType = strImageType
End Property

Public Property Get IsImage
IsImage = bolIsImage
End Property

Public 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

Public function lngConvert(strTemp)
lngConvert = clng(asc(left(strTemp, 1)) + ((asc(right(strTemp, 1)) * 256)))
end function

Public function lngConvert2(strTemp)
lngConvert2 = clng(asc(right(strTemp, 1)) + ((asc(left(strTemp, 1)) * 256)))
end function

Public Sub gfxSpex(flnm)

dim strPNG
dim strGIF
dim strBMP
dim strType
strType = ""
strImageType = "(unknown)"

bolIsImage = 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"
lngWidth = lngConvert(GetBytes(flnm, 7, 2))
lngHeight = lngConvert(GetBytes(flnm, 9, 2))
lngDepth = 2 ^ ((asc(GetBytes(flnm, 11, 1)) and 7) + 1)
bolIsImage = True

elseif left(strType, 2) = strBMP then ' is BMP

strImageType = "BMP"
lngWidth = lngConvert(GetBytes(flnm, 19, 2))
lngHeight = lngConvert(GetBytes(flnm, 23, 2))
lngDepth = 2 ^ (asc(GetBytes(flnm, 29, 1)))
bolIsImage = True

elseif strType = strPNG then ' Is PNG

strImageType = "PNG"
lngWidth = lngConvert2(GetBytes(flnm, 19, 2))
lngHeight = lngConvert2(GetBytes(flnm, 23, 2))
lngDepth = getBytes(flnm, 25, 2)

select case asc(right(lngDepth,1))
case 0
lngDepth = 2 ^ (asc(left(lngDepth, 1)))
bolIsImage = True
case 2
lngDepth = 2 ^ (asc(left(lngDepth, 1)) * 3)
bolIsImage = True
case 3
lngDepth = 2 ^ (asc(left(lngDepth, 1))) '8
bolIsImage = True
case 4
lngDepth = 2 ^ (asc(left(lngDepth, 1)) * 2)
bolIsImage = True
case 6
lngDepth = 2 ^ (asc(left(lngDepth, 1)) * 4)
bolIsImage = True
case else
lngDepth = -1
end select

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 sub
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

if asc(mid(strBuff, lngPos, 1)) < 192 or asc(mid(strBuff, lngPos, 1)) > 195 then
lngMarkerSize = lngConvert2(mid(strBuff, lngPos + 1, 2))
lngPos = lngPos + lngMarkerSize + 1
else
ExitLoop = True
end if

loop

if ExitLoop = False then

lngWidth = -1
lngHeight = -1
lngDepth = -1

else

lngHeight = lngConvert2(mid(strBuff, lngPos + 4, 2))
lngWidth = lngConvert2(mid(strBuff, lngPos + 6, 2))
lngDepth = 2 ^ (asc(mid(strBuff, lngPos + 8, 1)) * 8)
bolIsImage = True

end if

end if

Dimensioni(0) = lngHeight
Dimensioni(1) = lngWidth
Dimensioni(2) = lngDepth
end Sub

Public Function doName(strPath)
Dim arrSplit
arrSplit = Split(strPath, "\")
doName = arrSplit(UBound(arrSplit))
End Function

End Class

function FImageSize(pathFile)

Set objImageSize = New ImageSize

With objImageSize

.ImageFile = pathFile

If .IsImage Then

'Response.Write "Path: " & .ImageFile & "<br>"
'Response.Write "Name: " & .ImageName & "<br>"
'Response.Write "Type: " & .ImageType & "<br>"
'Response.Write "X: " & .ImageWidth & "<br>"
'Response.Write "Y: " & .ImageHeight & "<br>"
'Response.Write "Colors: " & .ImageDepth & "<br>"
FImageSize = .ImageWidth & "/" & .ImageHeight
Else

'Response.Write "Name: " & .ImageName & "<br>"
'Response.Write "it isn't an image"
FImageSize = ""
End If

End With

Set objImageSize = Nothing

end function

pathFile = path dell'immagine
sizeImmagine = FImageSize(pathFile)
if sizeImmagine <> "" then
sizeImmagine = split(sizeImmagine,"/")
WidthImmagine = trim(sizeImmagine(0))
HeightImmagine = trim(sizeImmagine(1))
end if
%>

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.