最简单的GD验证码程序。。
#!/usr/bin/perl
#use LBCGI;
use CGI qw(:all);
$verify= "1234";
require GD;
my $font = GD::gdGiantFont();
my $dx= 2 + $font->width * length $verify ;
my $dy = 2 + $font->height;
my $image = GD::Image->new($dx,$dy);
my $background = $image->colorAllocate(0,0,0);
my $txt = $image->colorAllocate(255,255,255);
#$image->transparent($background);
$image->string($font, 1, 1, $verify, $txt);
# print header(-charset=>gb2312, -type=>'image/png'), $image->png;
print header('image/png'), $image->png;
exit 0;
用的是 CGI模块,一切正常显示。
换成LBCGI模块,就图片无法显示。。无奈。。用了$image->gif;Win32测试环境LBCGI模块显示正常。
上传到FreeBSD空间,有没有办法显示图片?
研究LBCGI中header函数,似乎没有和CGI的header函数有区别的地方??
use LBCGI qw(header);
這能嗎?
还是不行的。。其实是输出了。。就是浏览器告诉图片非法不能显示。。 error.log没有错误,程序返回的数值也是正常的。
那麼 你就看看所輸出的http header 是什麼吧..
是 Content-Type: text/html; charset=GB2312
ft,http header就不对。。但是。。为什么?
明明 -type=>'image/gif' 了呀
改成 print header(-type=>'image/png'), $image->png; 后。
测试http header 是 Content-Type: image/png; charset=GB2312
但是图象依然不显示。郁闷:(
print header('image/png');
binmode (STDOUT);
print $image->png;
試試
估計是這問題
还是不行。。
发现。在CGI模块下面。。。http header 没有 charset=GB2312。。
可能是这个原因?
應該沒關係...
試試$LBCGI::HEADERS_ONCE = 1;
吧..估計不會是這問題..
没有用:(
睡觉了。明天再说,实在不行,我就不用LBCGI了。全部用CGI。汗 :em06:
没有看明白LBCGI模块怎么写的么?
如果你的GD不支持gif,只支持png的话
把
print header(-charset=>'', -type=>'image/gif'), $image->gif;
修改为
print header(-charset=>'', -type=>'image/png'), $image->png;
就ok了
我晕下。。果真出现问题在了 -charset=>'' 上:(