Tony's imgBorn,图像生成类,多功能验证码,缩略图,水印

#1 tonylevid

自己做的一个图形类,包括了中英文验证码,缩略图,中英文图片水印。调用文件已经打包了,由于字体文件过大没有打包。各位友友可以到windows/fonts文件夹下的黑体(simhei.ttf)拷到主目录即可使用。
代码太长,在这里写不下,大家下载压缩包吧
附件:imgBorn.rar

2011-06-11 12:01:10

#2 jake

不错,很有用的图像类。:)


稍候转移到认证区。感谢楼主的分享,楼主很厉害哦,自己写这个。:handshake

2011-06-11 18:25:14

#3 tonylevid

:$kvoid的朋友,也是他介绍我用speedphp的,才用一个星期

2011-06-12 17:32:25

#4 jake

回复 3 tonylevid


    幸会幸会 :handshake :lol

2011-06-12 21:14:52

#5 tonylevid

也没有教大家怎么在sp里面怎么用。蛤蛤,现在补上来。


1:把imgBorn.php放入Extensions文件夹中。


2:在入口文件index.php里加入
require(SP_PATH."/SpeedPHP.php");
import("imgBorn.php");
spRun();


3:在controller里创建一个verify.php,这里简单的演示验证码,代码如下:
class verify extends spController{

function index(){

$img = spClass('imgBorn');

$img->verify(100,30,12,30,8);

}
}
这样$_SESSION['strCheck']的值就是验证码的内容了,当然$_SESSION的键名可以自定义。


4:最后一步,模板文件中这样写就OK啦


这是我的测试图片imgBorn.jpg
大家使用缩略图,水印的功能也和这一样,类里面有详细注释

2011-06-29 17:38:55

#6 jake

:handshake

2011-06-29 18:42:54

#7 anythink

哥们有没有试过用 imagemagick 来做呢?

2011-06-29 21:58:14

#8 tonylevid

:$这个真没有,应该考虑到很多虚拟主机只开通了GD扩展,所以用GD做了:)

2011-06-30 09:58:01

#9 anythink

试试吧~~童鞋.....  试好了 俺再更新一下俺的 html5 上传+ 缩图~~ 嘿嘿~~~~

2011-06-30 11:15:18

#10 tonylevid

:D嗯,有时间试试

2011-06-30 11:52:54

#11 free212

回复 7 anythink


    写过,功能比GD强多了,如gif图缩略后仍可为动态。但的确很多主机不支持,除非用自己的服务器。

2011-07-01 12:58:33

#12 anythink

回复 11 free212


    不能因为不支持就不做嘛,我就是自己服务器, 既然你写过的话 就发些新的上来吧~~~ 让大家一起学习学习

2011-07-02 13:35:14

#13 anythink

你这玩意生成的 缩略图 名字叫神马 ??

2011-07-03 17:52:27

#14 anythink

自己做的一个图形类,包括了中英文验证码,缩略图,中英文图片水印。调用文件已经打包了,由于字体文件过大 ...
tonylevid 发表于 2011-6-11 12:01
在么,发现你这个缩略图 完了如何保存到原始图片的文件夹中呢??

2011-07-03 18:11:32

#15 tonylevid

嗯,在缩略图那里加了两个参数,$savePath和$saveFileName。现在可以保存了,里面有测试图片imgBorn.rar

2011-07-03 22:16:47

#16 anythink

你这个功能性到是挺强  就是用起来还是差点火候............... 生成完了 没有return true , 让前面的程序怎么知道 是不是成功了呢........  水印功能测试中,建议你是用sp的 ext方式来写入 参数,现在后面跟一大堆,感觉不爽喔

2011-07-03 23:36:57

#17 anythink

水印这个
$dstPosArr(数组,必填),填写水印文件所在目标文件的坐标位置的一维数组

是神马情况,让我自己指定一个坐标..... 不算一下 左上右下神马的 = = 疯了...

2011-07-03 23:45:22

#18 anythink

而且水印过的图也不能保存。。。 水印过的图质量差很多。。。。。。 等楼主最好能做一款 imagemagick 的吧

gd2 哎 。。。

2011-07-03 23:46:35

#19 anythink

由于我对图片不太懂 ,我只能给你说一下思路,希望你能做出更佳好用的图片处理!

是用sp 的 spExt 来加载默认参数 ,比如 字体存放位置, 缩略图 缩放尺寸。水印图片存放位置,处理图片精细度。

这个作为全局配置。


然后我们先看 验证码, 你的验证码 字符间距貌似没有。。。

运行时载入参数, 宽高, 即可。。

可选参数 用数组传入

由于我对图片不太懂 ,我只能给你说一下思路,希望你能做出更佳好用的图片处理!
是用sp 的 spExt 来加载默认参数 ,比如 字体存放位置, 缩略图 缩放尺寸。水印图片存放位置,处理图片精细度。
这个作为全局配置。

然后我们先看 验证码, 你的验证码 字符间距貌似没有。。。
运行时载入参数, 宽高, 即可。。
可选参数 用数组传入

$prams = array('fontX'=>'',
                      'fontY'=>'' ...... );


public funciton verify ($width,$height,$params)




然后看缩略图
运行时参数:  图片物理地址
可选参数: $params = array('是否比例缩放'=>'是','缩放宽度'=>500,'缩放高度'=>'400(比例缩放为是的时候就不写这些参数)'.....);
是否原位置存放 => 是 缩略图前缀=>'t_' 当设置原位置存放时 才需要, 缩略图存放位置=>'', 缩略图名称=>'',当不是原位置存放的时候设置
public function thumbnail($img_src,$params)


水印先不说..

2011-07-03 23:57:55

#20 tonylevid

:$这不刚用sp不久嘛

2011-07-04 00:04:36

#21 anythink

其实很简单啊 就用到了spExt 方法获取 配置文件。 参考参考哈~~

2011-07-04 09:22:28

#22 tonylevid

今天看了下imagick,的确很强大,而且使用也比GD简单多了。不过我在m$瘟到死上怎么没装成功:(,扩展dll和软件都装了,new Imagick也没报错,可phpinfo里就是没有显示这个扩展,郁闷。。。过几天把LINUX装上去了再做,写一个sp的标准扩展:)

2011-07-04 16:26:07

#23 anythink

好的~~ 你windows下没装好么。。 我还没装完

2011-07-04 18:31:20

#24 anythink

就是没有找到DLL呢.....

2011-07-04 18:31:36

#25 tonylevid

开始安装new会报错,后来看手册上的评论,就下载的这两个版本。不报错了,但还是不显示。
我已经把LINUX装好了
Martin Vincent 22-Jan-2010 04:32
For PHP 5.3 I have read that these versions should work:
ImageMagick-6.5.9-0-Q16-windows-dll.exe
imagick-2.3.0-dev/vc9_nts/php_imagick.dll

2011-07-04 19:18:54

#26 anythink

恭喜!~ 好样的~~

2011-07-04 22:21:01

#27 anythink

验证码你可以参考一下starlight36 做的那个~

2011-07-05 13:42:16

#28 anythink

争取把你这个改造成一个很牛逼很好用的图形生成类~

2011-07-05 13:42:44

#29 tonylevid

嗯,我会做成sp标准扩展的

2011-07-05 14:15:04

#30 anythink

:victory: ~~

2011-07-05 17:22:04

#31 tonylevid

暂时改成了sp标准扩展,jake前辈不建议传送门吧:P ,演示地址:演示

2011-07-07 02:53:38

#32 tonylevid

:funk:不见了,tonylevid.com/imgbornSP/

2011-07-07 02:55:13

#33 tonylevid

带sp框架的使用方法,大家把windows/fonts文件夹下的黑体(simhei.ttf)拷到imgborn文件夹,把SpeedPHP框架拷到主目录。
//如需在程序中动态配置的参数或保留参数为默认时,请在这里设置为false
$spConfig = array(
'ext'=>array(
    'imgBorn'=>array(
            'verify'=>array(
                        'imgW'=>100,//图像的宽度,             //int, 单位为px
            'imgH'=>30,//图像的高度,             //int, 单位为px
            'fontsize'=>12,//字体大小,           //int, 单位为px
            'fontX'=>30,//字符起始位置坐标X,     //int, 单位为px,默认为imgW/2
            'fontY'=>20,//字符起始位置坐标Y,     //int, 单位为px,默认为imgH/2
            'isCN'=>true,//是否打开中文验证码,     //bool, true或false, 默认false, 如打开中文验证, 则需要参数'ttf'
            'ttf'=>'imgborn/simhei.ttf',//ttf字体的路径,           //string, 默认为null, 如需中文字符, 必须指定此路径(最好为绝对路径)
            'other'=>array(                 //其他配置
                            'bg'=>false,//图像背景颜色,                //string, 默认为'FFFF93'
                            'alpha'=>false,//背景图像透明度,           //int, 范围为0-127,代表完全不透明到完全透明, 默认为0
                            'pxNum'=>false,//噪点数目,                 //int, 默认为50
                            'pxColor'=>false,//噪点颜色,               //string, 默认为'000000'
                            'lineNum'=>false,//干扰直线数目,           //int, 默认为3
                            'lineColor'=>false,//干扰直线颜色,         //string, 默认为'000079'
                            'arcNum'=>false,//干扰弧线数目,            //int, 默认为1
                            'arcColor'=>false,//干扰弧线颜色,          //string, 默认为'009393'
                            'isMath'=>false,//是否代开9*9算术图像验证, //bool, true或false, 默认为false
                            'myString'=>false,//随机字符库,            //string, 默认为0-9A-Z随机字符库,
                            'stringNum'=>false,//取字符库数组元素个数, //int, 默认为4
                            'stringColor'=>false,//字体颜色,           //string, 默认为'000000'
                            'hasBorder'=>false,//是否有边框,           //bool, true或false, 默认true
                            'borderColor'=>false,//边框颜色            //string, 默认为'000000'
            )
                ),
                'thumbnail'=>array(
                        'outW'=>false,//缩略图宽度,             //int, 单位为px
            'outH'=>false,//缩略图高度,             //int, 单位为px
            'isHigh'=>true,//是否输出高质量缩略图, //bool, true或false, 默认true, 建议开启
            'percent'=>false,//百分比缩略图,        //int, 默认为关闭, 0代表关闭状态. 若开启, 则'outW'和'outH'将失效. 如:100, 代表输出原大小
            'savePath'=>'imgborn/tb',//缩略图保存路径,     //string, 默认为当前目录下的'tb'目录
            'saveFileName'=>false,//保存的文件名    //string, 默认为'tb_文件原名'(包含后缀)
                ),
                'watermark'=>array(
                        'watermarkImg'=>'imgborn/watermark.jpg',//水印图像文件路径,//string, 如'watermark.jpg'
            'dstPosArr'=>false,//水印文件坐标位置,  //array, 默认为array(0,0), 图像的左上角
            'alpha'=>100,//水印图像透明度,        //int, 值范围为0-100, 代表完全透明到完全不透明, 默认为100
            'iStr'=>false,//水印字符串,             //string, 以字符水印, 默认关闭. 若开启, 则'watermarkImg'将失效
            'ttfW'=>'imgborn/simhei.ttf',//ttf字体文件路径,        //string, 如需中文字符, 必须指定此路径
            'fontsizeW'=>20,//字体大小,          //int, 单位为px
            'isCNW'=>true,//是否打开中文,          //bool, true或false, 默认false, 如打开中文验证, 则需要参数'ttfW'
            'strColor'=>'FFFFFF',//字体颜色,           //string, 默认为'000000'
            'strAlpha'=>false//字体透明度          //值范围为0-127,分别代表完全不透明和完全透明, 默认为0, 若此参数设置, 'alpha'将失效
                )
    )
)
);
这里下载:imgbornSP.rar

2011-07-07 03:00:03

#34 anythink

这么快就完善好了嘛???

2011-07-07 15:41:36

#35 anythink

看看先~~~~~~~

2011-07-07 15:41:41

#36 tonylevid

imgBorn.rar

2011-07-08 19:59:34

#37 anythink

还没有用最新版。
但是先在出现了一些问题

火狐下可能处理缩略图有问题 导致 火狐报错 图像..... 因其本身有错无法显示。

建议加强错误的屏蔽,如果不能创建缩略图 一律返回false 并停止其内部执行 并且不要报任何php级别错误

2011-07-12 00:38:33

#38 anythink

或者返回一个数组,  如果处理出错 则返回 return array('err'=>'详细错误信息')  还是不要报php级别的错误

这样 调用的时候 判断 数组 err 是否为空,不为空 记录错误信息到日志~

2011-07-12 00:43:39

#39 tonylevid

额,刚开忘记把类文件打包了,后来发上来的imgBorn.php放在extension,就可以用了。我用火狐测试的,没出什么问题,我的是FF5,还测试过Chrome和IE8。前几天网站挂了,现在好了tonylevid.com/imgbornSP/

2011-07-12 13:34:39

#40 hygzs

学习了:)

2011-08-30 15:19:55

#41 xiaobai

亲们 现在这个类完善了没? 看了下很久没更新了。

2012-05-30 11:08:13

#42 bnnyv

:):D嗯,有时间试试

2012-07-05 08:07:38

#43 一米八三

顶一下,很有用的东西

2012-07-07 18:22:00

#44 kevinwu

标记一下,说明我来过

2012-10-23 01:21:30

#45 缺省参数

tonylevid 发表于 2011-6-29 17:38
也没有教大家怎么在sp里面怎么用。蛤蛤,现在补上来。
在表单中,怎么单独刷新验证码?

2012-11-01 22:05:48