vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 2.x Full Releases (https://vborg.vbsupport.ru/forumdisplay.php?f=4)
-   -   Auto resizing of avatars (https://vborg.vbsupport.ru/showthread.php?t=44680)

Dmitriy 10-16-2002 10:00 PM

Auto resizing of avatars
 
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.

NuclioN 10-16-2002 11:54 PM

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.

Dmitriy 10-16-2002 11:59 PM

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.

Dmitriy 10-17-2002 12:06 AM

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>";
}

}

NuclioN 10-17-2002 12:24 AM

I've requested the imagemagic by our sysop, i hope he will use his common sense. :D

LangTuDaTinh 10-17-2002 04:05 AM

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

Erwin 10-17-2002 04:09 AM

Good idea. :) Good job.

Talisman 10-17-2002 08:45 AM

Won't work with 2.2.6 either, so will have to come back for this one sometime later. Bummer.

Dmitriy 10-17-2002 10:26 AM

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.

FleaBag 10-17-2002 02:33 PM

Nice hack. :D


All times are GMT. The time now is 08:08 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01213 seconds
  • Memory Usage 1,736KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete