The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
Auto resizing of avatars Details »» | |||||||||||||||||||||||||
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
|
Comments |
#2
|
||||
|
||||
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.
|
#3
|
|||
|
|||
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. |
#4
|
|||
|
|||
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>"; } } |
#5
|
||||
|
||||
I've requested the imagemagic by our sysop, i hope he will use his common sense.
|
#6
|
|||
|
|||
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 |
#7
|
||||
|
||||
Good idea. Good job.
|
#8
|
||||
|
||||
Won't work with 2.2.6 either, so will have to come back for this one sometime later. Bummer.
|
#9
|
|||
|
|||
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. |
#10
|
||||
|
||||
Nice hack.
|
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|