Mibew Messenger Community
General => Support => Topic started by: shwekhaw on November 29, 2014, 09:14:21 PM
-
We have been getting increasing amount of spam bots recently so we have to put up Captcha. But the problem is real visitors are having trouble reading small fonts. I looked at captcha.php in libs folder. ImageString function has font size 5 as largest limit which is not large enough. I tried using imagettftext function and it does not work (don't know why. according to phpinfo, freetype library is enabled). Is there work around this to make the security code string larger (like using a function to enlarge the whole image?)
-
What do you mean by "freetype library"? imagettftext (http://php.net/manual/en/function.imagettftext.php) function is a part of GD library. You'd better provide the appropriate parts of your phpinfo() output.
And how did you used imagettftext function? Show us the code.
As for the zooming an image. Personally I think that it's a terrible idea. However, have you tried to search in the PHP documentation? What about this function (http://php.net/manual/en/function.imagecopyresampled.php)?
-
Quote from php.net on imagettftext
Note:
This function requires both the GD library and the ยป FreeType library.
Here is phpinfo
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.3.11
T1Lib Support enabled
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 6b
PNG Support enabled
libPNG Version 1.2.39
WBMP Support enabled
XPM Support enabled
XBM Support enabled
Here is how I modify the code.
$font = 'arial.ttf';
// ImageString($image, 5, 30, 4, $security_code, $white);
imagettftext($image, 20, 0, 10, 20, $white, $font, $security_code);
I will try imagecopyresampled function.
-
I made it work with imagecopyresampled function. Text looks little rough like zoom in effect. But it is readable.
-
Talking about imagettftext function. I don't know what you meant by "does not work", since you haven't provided any messages from error logs and haven't described any symptoms.
But I suspect that your arial.ttf file is either inaccessible (maybe you should have used the full path) or broken. (BTW, don't forget that fonts should be used according to their licenses...)
-
Strangely there is nothing in error log. I run test script mentioned in php.net and browser said the image cannot be displayed because it contains error. All ttf files are in same folder as captcha.php (libs folder). I got them from under Win 7 as well my raspberry pi running wheezy.
-
Strangely there is nothing in error log.
Then your server settings probably prevents PHP warnings from appearing in error logs.
All ttf files are in same folder as captcha.php (libs folder).
And what makes you think that the script from root directory will find the font file without full path? ::)
Try this:
$font = dirname(__FILE__) . '/arial.ttf';
-
Sever is reporting other php errors in log file so I am assuming error is not with php. I am using example 1 at http://php.net/manual/en/function.imagettftext.php. Full path does not work either. I think the problem is with font file. I am not familiar with installing font in linux system. Do I need to install font to the system like in Windows or just copying should work?
-
Do I need to install font to the system like in Windows or just copying should work?
A TTF font is just a file. So copying should be enough.
At the same time, I don't think that this problem is somehow related to Mibew Messenger. It looks more like a problem with PHP and/or some of its libraries. Or a problem with the font. Or with the environment (for example, with some system limits and/or insufficient system resources). As a matter of fact, I can only stare into a crystal ball and make abstract guesses.
-
Thanks. For now imagecopyresampled does the job.