Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 2.x > vBulletin 2.x Full Releases
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Auto resizing of avatars Details »»
Auto resizing of avatars
Version: 1.00, by Dmitriy Dmitriy is offline
Developer Last Online: Dec 2002 Show Printable Version Email this Page

Version: 2.2.x Rating:
Released: 10-16-2002 Last Update: Never Installs: 24
 
No support by the author.

Those of you with busy boards know that a lot of times users don't have a clue of how to re-size the
pictures they want to use as avatars.

Someone may want to use a cool pic he has on the hard drive, but the picture size is too big and
user gets error message when trying to upload it as avatar. Many users don't know how to re-size the
picture and they will just give up and nevere upload the avatar.

I was ignoring this for too long, but now I came up with the solution:

This hack will re-size the uploaded avatar on the fly, meaning there are no error messages
when the picture is too large, it will be re-sized automatically before it's inserted into the
database



open the member.php file
find thess lines:

if ($imginfo[0]>$avatarmaxdimension or $imginfo[1]>$avatarmaxdimension) {
@unlink($filename);
eval("standarderror(\"".gettemplate("error_avatarb addimensions")."\");");
}


replace with these lines:

if ($imginfo=@getimagesize($filename)) {
if ($imginfo[0]>$avatarmaxdimension or $imginfo[1]>$avatarmaxdimension) {

$image_width = $imginfo[0];
$image_height= $imginfo[1];
if ($image_height > $image_width)
{
$sizefactor = (double) ($avatarmaxdimension / $image_height);
}
else
{
$sizefactor = (double) ($avatarmaxdimension / $image_width) ;
}


$newwidth = (int) ($image_width * $sizefactor);
$newheight = (int) ($image_height * $sizefactor);

$newsize = $newwidth . "x" . $newheight;

$cmd = "/usr/local/bin/mogrify -resize $newsize "."$filename 2>&1";

exec($cmd, $exec_output, $exec_retval);
if($exec_retval > 0)
{
print "ERROR: exec() error: $exec_output[0]";
}
else
{
print "<P align=\"center\"><b>Image was resized from " . $image_width . "x" .
$image_height . " to $newsize</p>";
}

}

That's all.

Now make sure in your control panel to set a really large max file size in the avatar options because
people may now use any size pictures, so the file size may possibly be over 500K
Don't worry, after the avatar is re-sized, the new file size will be really small.

This hack uses the Mogrify utility from ImageMagick, which is free from imagemagick.org

I have this hack installed on www.examnotes.net/forums

You need at least 1 post in order to upload avatar.

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #2  
Old 10-16-2002, 11:54 PM
NuclioN's Avatar
NuclioN NuclioN is offline
 
Join Date: Aug 2002
Posts: 955
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Only imagemagic or does it also work with others? It's a good hack but i think our apache is using MD or something like that.
Reply With Quote
  #3  
Old 10-16-2002, 11:59 PM
Dmitriy Dmitriy is offline
 
Join Date: Jun 2002
Posts: 13
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

As far as I know GD does not support GIF format, but GD can be used for similar function to re-size the PNG and JPG files (if GD was installed with JPG support)

For me it was more important to support GIF and JPG than PNG and JPG, also ImageMagic can support PNG, I just did not compile it with PNG support, but it's easy to add.

This hack will only work with ImageMagick.

I think GIMP will also have re-size functions but it's more complicated to use GIMP.
Reply With Quote
  #4  
Old 10-17-2002, 12:06 AM
Dmitriy Dmitriy is offline
 
Join Date: Jun 2002
Posts: 13
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

By the way, I just added an auto-resize for attached images to keep images under the max size. Basically the same think, edit the functions.php in the same manner (almost):

if ($extension=="gif" or $extension=="jpg" or $extension=="jpeg" or $extension=="jpe" or $extension=="png" or $extension=="swf") { // Picture file
if ($imginfo=@getimagesize($attachment)) {
if (($maxattachwidth>0 and $imginfo[0]>$maxattachwidth) or ($maxattachheight>0 and $imginfo[1]>$maxattachheight)) {

$image_width = $imginfo[0];
$image_height= $imginfo[1];

if ($image_width > $maxattachwidth)
{
$sizefactor = (double) ($maxattachwidth / $image_width);
}
elseif ($image_height > $maxattachheight)
{
$sizefactor = (double) ($maxattachheight / $image_height) ;
}


$newwidth = (int) ($image_width * $sizefactor);
$newheight = (int) ($image_height * $sizefactor);

$newsize = $newwidth . "x" . $newheight;

$cmd = "/usr/local/bin/mogrify -resize $newsize "."$attachment 2>&1";

exec($cmd, $exec_output, $exec_retval);
if($exec_retval > 0)
{
print "ERROR: exec() error: $exec_output[0]";
}
else
{
print "<P align=\"center\"><b>Image was resized from " . $image_width . "x" .
$image_height . " to $newsize</p>";
}

}
Reply With Quote
  #5  
Old 10-17-2002, 12:24 AM
NuclioN's Avatar
NuclioN NuclioN is offline
 
Join Date: Aug 2002
Posts: 955
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I've requested the imagemagic by our sysop, i hope he will use his common sense.
Reply With Quote
  #6  
Old 10-17-2002, 04:05 AM
LangTuDaTinh LangTuDaTinh is offline
 
Join Date: Dec 2001
Posts: 159
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

this hack doesn't work /w 2.2.7 right? because i got this error

Parse error: parse error, unexpected $ in /home/tvseries/public_html/forums/member.php on line 1621

can u modify it so it would work /w 2.2.7 too. thanks
Reply With Quote
  #7  
Old 10-17-2002, 04:09 AM
Erwin's Avatar
Erwin Erwin is offline
 
Join Date: Jan 2002
Posts: 7,604
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Good idea. Good job.
Reply With Quote
  #8  
Old 10-17-2002, 08:45 AM
Talisman's Avatar
Talisman Talisman is offline
 
Join Date: Aug 2002
Location: USA/West Coast
Posts: 371
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Won't work with 2.2.6 either, so will have to come back for this one sometime later. Bummer.
Reply With Quote
  #9  
Old 10-17-2002, 10:26 AM
Dmitriy Dmitriy is offline
 
Join Date: Jun 2002
Posts: 13
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It should work with any version of 2.2.X but you MUST have the ImageMagick installed on your server with support for GIF and JPG format.

If you don't have ImageMagick installed you will get parse errors.
Reply With Quote
  #10  
Old 10-17-2002, 02:33 PM
FleaBag's Avatar
FleaBag FleaBag is offline
 
Join Date: Dec 2001
Posts: 1,674
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Nice hack.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 02:21 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.18657 seconds
  • Memory Usage 2,299KB
  • Queries Executed 25 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (9)postbit
  • (10)postbit_onlinestatus
  • (10)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • 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
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete