Snitz Forums 2000
Snitz Forums 2000
Home | Profile | Register | Active Topics | Members | Search | FAQ
 All Forums
 Snitz Forums 2000 MOD-Group
 MOD Add-On Forum (W/Code)
 Topic Image Preview

Note: You must be registered in order to post a reply.
To register, click here. Registration is FREE!
Before posting, make sure you have read this topic!

Screensize:
UserName:
Password:
Format Mode:
Format: BoldItalicizedUnderlineStrikethrough Align LeftCenteredAlign Right Horizontal Rule Insert HyperlinkInsert EmailInsert Image Insert CodeInsert QuoteInsert List
   
Message:

* HTML is OFF
* Forum Code is ON
Smilies
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Clown [:o)]
Black Eye [B)] Eight Ball [8] Frown [:(] Shy [8)]
Shocked [:0] Angry [:(!] Dead [xx(] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

 
Check here to subscribe to this topic.
   

T O P I C    R E V I E W
Carefree Posted - 13 June 2009 : 09:46:51
The Topic Image Preview MOD scans topics from allowed forums, then displays images and associated topic titles from the last 10 topics which included images. Each image thumbnail is linked to a full size version and each topic title is linked to the topic itself.

This mod includes a check of whether members are allowed access to a forum before displaying the images.

Guests are not allowed access. To allow access to guests, in "Topic_Images.asp", delete (or comment out) lines 50-52; or in "inc_topic_images.asp", delete (or comment out) lines 41-43.

"inc_topic_images.asp" is provided to enable the image display to appear in "active.asp" (if you want them displayed with the active topics page).

Get a copy at SnitzBitz.



Edit: Thanks to a suggestion by Etymon, in v1.1, I added a check to determine whether images are allowed at all, and another to check if there is an image path.
15   L A T E S T    R E P L I E S    (Newest First)
Carefree Posted - 02 July 2009 : 12:32:17
No problem. It's not really necessary for the mod, just would improve it a bit.
AnonJr Posted - 02 July 2009 : 11:25:36
I'd love to dig in and help trouble-shoot but I've overbooked myself a tad and have been working furiously to un-bury myself...
Carefree Posted - 01 July 2009 : 17:45:54
I've tested that routine before for local files - there's a similar one for remote files, but the portion for .jpg fails.
AnonJr Posted - 01 July 2009 : 17:17:40
I needed something similar for a local .vbs to generate an XML file with image specs. I've used the following functions in that project - context is provided. Can't remember where I originaly got them though...

'collect the image information into an array
Dim blnGfxSpex, width, height, colors, strType
intCount = 0
For Each objFile In objFS.GetFolder(".\images").Files
	'As per the readme, images need to be 'non-progressive' JPGs
	If LCase(Right(objFile.Name, 4)) = ".jpg" and intCount <= intNumOfFiles Then
		blnGfxSpex = gfxSpex((".\images\" & objFile.Name), width, height, colors, strType)
		MsgIE Now() & " - Now getting information on " & (intCount + 1) & " of " & intNumOfFiles & "."
		arrImages(intCount) = "<image>" & vbNewLine & _
								"<filename>" & objFile.Name & "</filename>" & vbNewLine & _
								"<caption></caption>" & vbNewLine & _
								"<width>" & width & "</width>" & vbNewLine & _
								"<height>" & height & "</height>" & vbNewLine & _
								"</image>" & vbNewLine
		intCount = intCount + 1
	End If
Next

':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
':::                                                             :::
':::  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)
 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

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

	strImageType = "BMP"
	Width = lngConvert(GetBytes(flnm, 19, 2))
	Height = lngConvert(GetBytes(flnm, 23, 2))
	Depth = 2 ^ (asc(GetBytes(flnm, 29, 1)))
	gfxSpex = True

 elseif strType = strPNG then			' Is PNG

	strImageType = "PNG"
	Width = lngConvert2(GetBytes(flnm, 19, 2))
	Height = lngConvert2(GetBytes(flnm, 23, 2))
	Depth = getBytes(flnm, 25, 2)

	select case asc(right(Depth,1))
	   case 0
		  Depth = 2 ^ (asc(left(Depth, 1)))
		  gfxSpex = True
	   case 2
		  Depth = 2 ^ (asc(left(Depth, 1)) * 3)
		  gfxSpex = True
	   case 3
		  Depth = 2 ^ (asc(left(Depth, 1)))  '8
		  gfxSpex = True
	   case 4
		  Depth = 2 ^ (asc(left(Depth, 1)) * 2)
		  gfxSpex = True
	   case 6
		  Depth = 2 ^ (asc(left(Depth, 1)) * 4)
		  gfxSpex = True
	   case else
		  Depth = -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 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

	   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

	  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
Carefree Posted - 01 July 2009 : 15:55:40
You're welcome. Now, if only I can get the remote image dimensions to read properly, I can scale the table & images down some.
Classicmotorcycling Posted - 01 July 2009 : 15:05:55
Tested and now matches the topics and images on my site. Thanks Craig..
richfed Posted - 01 July 2009 : 06:52:09
And, thank you Mr, Carefree ... this issue IS all resolved on my site!!!
Carefree Posted - 01 July 2009 : 04:06:13
quote:
Originally posted by Classicmotorcycling

Not for the test site, sorry.

What I am getting is that there is an image in a topic, but when you click on the topic, there is no image in the actual topic. The image relates to a different topic when I do a search for for the image name in the search function I find they topic which is totally different.

Great concept but.



Issue has been resolved. Enjoy
Carefree Posted - 29 June 2009 : 23:13:32
I received the EMail, replied.

I tried several approaches to get remote photo dimensions read (to allow for resizing to a uniform width or height), the .gifs were read fine, but .jpgs were not. Since the vast majority of posted images seem to be in the .jpg format, that made resizing worthless. If I could get the dimensions of remote images extracted, I can shrink the table & photos.
richfed Posted - 29 June 2009 : 18:31:59
OK, I have it all straightened out with the exception of the mismatched photos. I tried to send you an e-mail; receieved an Earthlink reply about spam. What do you need, Carefree?

OH, also ... how could I make the whole photo table smaller with uniform thumbnails or something. I think it would look much neater.

Thanks!
Carefree Posted - 28 June 2009 : 17:32:43
quote:

When logged in as Admin, I see the images off of the inc_header link, BUT they do not correspond to the correct thread. [Looks like the same problem Classicmotorcycling experienced.]


I have no idea what is causing this behavior. I have tried the mod on different forums, versions 3.4.05 -> 3.4.07, and cannot get it to display images from other posts. If you set me up access so I can see this, I'll fix it.
quote:
When logged out completely, I get the following error when clinking on the inc_header link [before commenting out, I got the desired loop back to default.asp]:

Microsoft VBScript runtime error '800a000d'
Type mismatch: 'chkForumAccessNew'

/messageboard/topic_images.asp, line 196


Fixed. I added bypass routines so that non-members aren't checked for access to particular forums.

quote:
When accessing the Active Topics Page, I get this error, logged in or not:

Microsoft VBScript compilation error '800a0411'

Name redefined

/messageboard/inc_topic_images.asp, line 44

Dim strTgtURL(10), strSubj(10), strTPID(10)
----^


Fixed. I had forgotten to delete this after moving it to "config.asp".
richfed Posted - 28 June 2009 : 15:27:05
Not there, yet, Carefree ...

After downloading and installing AND commenting out the appropriate lines so that guests can see the previews also, here's what I experience:

1 - When logged in as Admin, I see the images off of the inc_header link, BUT they do not correspond to the correct thread. [Looks like the same problem Classicmotorcycling experienced.]

2 - When logged out completely, I get the following error when clinking on the inc_header link [before commenting out, I got the desired loop back to default.asp]:

quote:
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'chkForumAccessNew'

/messageboard/topic_images.asp, line 196



3 - When accessing the Active Topics Page, I get this error, logged in or not:

quote:
Microsoft VBScript compilation error '800a0411'

Name redefined

/messageboard/inc_topic_images.asp, line 44

Dim strTgtURL(10), strSubj(10), strTPID(10)
----^



I do not know the results when logged in as a normal user.
Carefree Posted - 28 June 2009 : 01:22:53
OK - 3.4.05 is included.
richfed Posted - 27 June 2009 : 19:07:17
That would be great ... thanks!
Carefree Posted - 27 June 2009 : 15:45:47
Let me dig up a copy of 3.4.05 and see what needs to be changed to make it work. I'll make you a copy with individual copies of instructions in htm format.

Snitz Forums 2000 © 2000-2021 Snitz™ Communications Go To Top Of Page
This page was generated in 0.05 seconds. Powered By: Snitz Forums 2000 Version 3.4.07