View Single Post
  #1  
Old 10-17-2008, 04:44 PM
mangus580 mangus580 is offline
 
Join Date: Aug 2008
Posts: 36
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Watermarking Images

Ok, I have been working on a watermarking mod for my site. The way I have the mod setup on my old forum, it puts the username, along with site name in the watermark. This helped my users feel like they still owned their images (trust me even that was a battle!!)

So... I have taken the code I used on the old setup, and been working it together as a plugin.

I have a hook set for 'attachment_complete', and this is the code I am using.

PHP Code:
if(! empty($attachpath)) {
        
$attachpath2 '/home/steelsol/test.steelsoldiers.com/forum_attachments/' $GLOBALS['vbulletin']->userinfo['userid'] . '/';
        
$stamp_file =  $attachpath2 '' $GLOBALS['vbulletin']->userinfo['userid'] . 'w-mark.png';
        if (!
file_exists($stamp_file)){
          
$stamp_fgnd $attachpath2 '' $GLOBALS['vbulletin']->userinfo['userid'] . '_fgnd.png';
          
$stamp_mask $attachpath2 '' $GLOBALS['vbulletin']->userinfo['userid'] . '_mask.png';      
          
$stamp_text $GLOBALS['vbulletin']->userinfo['username'] . ' - www.steelsoldiers.com';
          
$stamp_fgnd_exec "/usr/bin/convert -size 480x50 xc:grey30 -font Helvetica-Bold -pointsize 18 -gravity SouthEast -draw \"fill grey70 text 0,0 '" $stamp_text "'\" " $stamp_fgnd;
          
$stamp_mask_exec "/usr/bin/convert -size 480x50 xc:black -font Helvetica-Bold -pointsize 18 -gravity SouthEast -draw \"fill white text 1,1 '" $stamp_text "' text 0,0 '" $stamp_text "' fill black text -1,-1 '" $stamp_text "' \" +matte " $stamp_mask;
          
$stamp_exec "/usr/bin/composite -compose CopyOpacity " $stamp_mask " " $stamp_fgnd " " $stamp_file;
          
exec($stamp_fgnd_exec);
          
exec($stamp_mask_exec);
          
exec($stamp_exec);
          
unlink($stamp_mask);
          
unlink($stamp_fgnd);
        }
    
$src_file =  '/home/steelsol/test.steelsoldiers.com/forum_attachments/' $GLOBALS['vbulletin']->userinfo['userid'] . '/' $attachmentinfo['attachmentid'] . '.attach';
    
$dest_file '/home/steelsol/test.steelsoldiers.com/forum_attachments/' $GLOBALS['vbulletin']->userinfo['userid'] . '/' $attachmentinfo['attachmentid'] . '.attach';
        
    
$watermark_exec "/usr/bin/composite -gravity southeast -geometry +10+10 " $stamp_file " " $src_file " " $dest_file;
    
exec($watermark_exec);             


Now, this works good, and saves the 'watermark' file for each user.

Here is my problem... it seems that VB relies on the filesize and maybe the hash entry in the DB. When I have this feature turned on, the image gets watermarked fine on the file system. The problem is, when you let VB try to display the image, it never works right. The image is cut short, by approximately the additional bytes of the watermarking.

I tried for a test, manually update the size in the database for one file to the appropriate byte count, but it didnt seem to help. This makes me think that maybe the filehash is involved as well?

Can anyone help me out here?
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01693 seconds
  • Memory Usage 1,802KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_php
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete