The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
Attached Image Watermarking PLUS Guest Viewing of Thumbnails Details »» | |||||||||||||||||||||||||||
Attached Image Watermarking PLUS Guest Viewing of Thumbnails
Developer Last Online: Mar 2012
I had been looking for these two options for quite a while, and was finally able to hire Brian (of vBadvanced) to write them for me. Since a lot of people have been looking for this, I have decided (with Brian's permission) to release this as a free, unsupported, modification.
This modification will allow you to specify a watermark image that will be overlayed over any attached JPG or PNG file on your site in real time, as the image is displayed. NO PERMANENT CHANGES ARE MADE TO ANY OF YOUR ATTACHMENTS. You can also exclude specific forums and usergroups from seeing the watermark. As an added bonus, he included the ability to allow guests to see attached image thumbnails, while still requiring them to register to see the full size attachments. (Make sure you have your Unregistered / Not Logged In usergroup set to NOT have access to download attachments.) PLEASE CLICK INSTALL so that maybe Jelsoft will include these as built-in features in a future version. Notes/Troubleshooting:
Well, on to the modification: ============================================= STEP 1: Since the resulting file contains too much vBulletin code, I am unable to include it with this modification. So, the first step is to copy vBulletin's attachment.php to a file named attachment_watermark.php. Then, edit attachment_watermark.php, making the following changes. ============================================= STEP 2: You need to delete a LOT of lines from the top of the file. Find this line... Code:
$idname = $vbphrase['attachment']; Your attachment_watermark.php file should begin with this code when you've completed this step: Code:
<?php $idname = $vbphrase['attachment']; ============================================= STEP 3: Find this line of code: Code:
if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']) OR !($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads']) OR !($forumperms & $vbulletin->bf_ugp_forumpermissions['cangetattachment']) OR (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers']) AND ($attachmentinfo['postuserid'] != $vbulletin->userinfo['userid'] OR $vbulletin->userinfo['userid'] == 0))) Code:
if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']) OR !($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads']) OR (!($forumperms & $vbulletin->bf_ugp_forumpermissions['cangetattachment']) AND !$vbulletin->GPC['thumb']) OR (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers']) AND ($attachmentinfo['postuserid'] != $vbulletin->userinfo['userid'] OR $vbulletin->userinfo['userid'] == 0))) ============================================= STEP 4: Find these lines of code: Code:
else { $attachpath = fetch_attachment_path($attachmentinfo['userid'], $attachmentinfo['attachmentid']); Code:
// ######################################### // ##### Start modified section for watermarks // ######################################### $vbulletin->options['attach_water_exforums'] = explode(',', $vbulletin->options['attach_water_exforums']); $vbulletin->options['attach_water_exgroups'] = explode(',', $vbulletin->options['attach_water_exgroups']); if ($vbulletin->options['attach_water_filelocation'] AND in_array($extension, array('jpg', 'jpeg', 'png')) AND !in_array($attachmentinfo['forumid'], $vbulletin->options['attach_water_exforums']) AND !array_intersect(fetch_membergroupids_array($vbulletin->userinfo), $vbulletin->options['attach_water_exgroups']) ) { $attachsize = getimagesize($attachpath); if ($attachsize[0] >= $vbulletin->options['attach_water_minsize'] AND $attachsize[1] >= $vbulletin->options['attach_water_minsize']) { $waterimage =& $vbulletin->options['attach_water_filelocation']; $watersize = getimagesize($waterimage); $waterext = strtolower(substr($waterimage, strrpos($waterimage, '.') + 1)); // Coordinates (height) switch ($vbulletin->options['attach_water_coordinates'][0]) { case 'n': $waterpos['height'] = 0 + $vbulletin->options['attach_water_padding']; break; case 'm': $waterpos['height'] = round(($attachsize[1] - $watersize[1]) / 2); break; case 's': $waterpos['height'] = round(($attachsize[1] - $watersize[1])) - $vbulletin->options['attach_water_padding']; break; } // Coordinates (width) switch ($vbulletin->options['attach_water_coordinates'][1]) { case 'w': $waterpos['width'] = 0 + $vbulletin->options['attach_water_padding']; break; case 'c': $waterpos['width'] = round(($attachsize[0] - $watersize[0]) / 2); break; case 'e': $waterpos['width'] = round(($attachsize[0] - $watersize[0])) - $vbulletin->options['attach_water_padding']; break; } // Watermark ext switch ($waterext) { case 'jpg': case 'jpeg': $watermark = imagecreatefromjpeg($waterimage); break; case 'png': $watermark = imagecreatefrompng($waterimage); break; } // Attachment ext switch ($extension) { case 'jpg': case 'jpeg': $attachimage = imagecreatefromjpeg($attachpath); break; case 'png': $attachimage = imagecreatefrompng($attachpath); break; } imagealphablending($attachimage, true); $watermark_width = imagesx($watermark); $watermark_height = imagesy($watermark); imagecopy($attachimage, $watermark, $waterpos['width'], $waterpos['height'], 0, 0, $watersize[0], $watersize[1]); define('WATERMARKED', true); } } // ######################################### // ##### End modified section for watermarks // ######################################### ============================================= STEP 5: Find this line of code: Code:
header('Content-Length: ' . (($lastbyte + 1) - $startbyte)); Code:
// ######################################### // ##### Start modified section for watermarks // ##### Changed to prevent filesize header on watermarked images // ######################################### if (!defined('WATERMARKED')) { header('Content-Length: ' . (($lastbyte + 1) - $startbyte)); } // ######################################### // ##### End modified section for watermarks // ######################################### ============================================= STEP 6: Find this line of code: Code:
($hook = vBulletinHook::fetch_hook('attachment_display')) ? eval($hook) : false; Code:
// ######################################### // ##### Start modified section for watermarks // ######################################### if (!$vbulletin->GPC['thumb'] AND defined('WATERMARKED')) { imagejpeg($attachimage); imagedestroy($attachimage); imagedestroy($watermark); } // ######################################### // ##### End modified section for watermarks STEP 7: Find this line of code: Code:
($hook = vBulletinHook::fetch_hook('attachment_complete')) ? eval($hook) : false; Code:
exit; ============================================= STEP 8: Save and upload attachment_watermark.php to your forum root directory. ============================================= STEP 9: Install the product-attach_watermark.xml Product via the vBulletin AdminCP Product Manager. ============================================= STEP 10: Configure the options at AdminCP -> vBulletin Options -> Attachment Watermarks. All fields should be self-explanatory. Show Your Support
|
Comments |
#112
|
||||
|
||||
When thumbs are set to 640px (actual size is much larger), there are nearing 200k images, and it is requested that thumbs are watermarked, I will try to watermark them. If they can't be done with this hack, I will find an alternate route.
|
#113
|
|||
|
|||
First off, I want to say that you did and excellent job in the documentation, I remember when I first started out and had to modify code, some authors assumed a lot of knowledge of the end users, your instructions could have been followed by a third grader.
Worked fine right away on 3.6.8 SP2. I tried to read through all the post and I assumed that this was done with Brian of vBadvanced fame that it would work with his CMPS portal as far as guest viewing thumbnails, but it doesn't seem to which is a real shame and the main reason I installed it. An idea I had for a future realease that may or may not be easy is a frame with a thick bottome or just the bottom where text and logo could go. This is something like the images at CGsociety.org in the CG Choice Galleries. Well I just wanted to chime in and say great work and that it worked fine right from the get go! |
#114
|
|||
|
|||
if someone right clicks your image and saves it will it save with the water mark or is this a fake watermark i saw earlier that it doesnt change the file?
|
#115
|
|||
|
|||
Also can someone tell me how to figure out if i have GD2 on my server i think i have GD1.8?
Plz help. |
#116
|
||||
|
||||
Did you try it?
Yes, the watermark will be there. The image is altered at the time its displayed, but not altered on the drive itself. |
#117
|
|||
|
|||
I have not tried it yet but i will i just got done making all the file edits. I hope it works also does just the watermark itself have to be a JPG or PNG or does this only watermark images that are JPG or PNG?
Im pretty sure it will watermark any attachment but the watermarkitself has to be a JPG or PNG correct? |
#118
|
||||
|
||||
i want Allow Guests to View Thumbnails one option don't have watermark.
help me pl, |
#119
|
||||
|
||||
Quote:
Mines is something like this /home/my_username/public_html/forum/watermark.png Can`t we set transparency to the watermark ? |
#120
|
|||
|
|||
sir i following step by step how to install this module,but until right now the watermark is didn't show.can u help me with my problem? im using vbulletin 3.68
|
#121
|
|||
|
|||
quick questions with this mod..
1) If a member is to save the image that is being viewed with the water mark, will the image be saved with the watermark on it. 2)How do you tell if the server has GD2 installed? 3) Wat does it mean by "Attachments must be stored in the file system. Database storage of file attachments will not work" Im currently using the Image Uplaod system built into 3.6.8. Will it watermark these images. Thank you for your help |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|