2009年4月7日星期二

Ruby/GD2

已更新,新内容参见:RGD - libgd binding for Ruby

Ruby/GD2是一个GD library的Ruby binding,支持GD2、Ruby 1.9,可运行于MSWin32平台。

本扩展很多代码都源自Ruby/GD v0.8.0,但由于API变化比较大,且不打算支持GD2之前的版本,故改名Ruby/GD2发布。由于我没有查到Ruby/GD采用的是何种许可证,如果将本扩展用于商业用途,请自行联系Ruby/GD当前维护者Alain Hoang,以确定没有法律问题。(真有人去问,也请告诉我一声。)

如果跟我一样在Windows下用Ruby 1.9.1,压缩包中有编译好的文件可以直接用。将bgd.dll放到Ruby的bin下,GD2.so放到site_ruby\1.9.1\i386-msvcrt下即可。我不确定是否可以在Ruby 1.8下编译,应该没有问题。不过用在Linux或OSX下,可能需要修改一下函数指针的定义。

文档暂时没有,RDoc感觉有点不好用且不会用。不过除了Ruby/GD的原始文档外,也可以参考CPAN上的GD模块,尽可能与该模块保持API兼容是我的初衷之一。

我自己肯定用不到GD库的这么多功能,错漏在所难免,有任何意见、建议、补丁,欢迎留言。

最后是一句废话:拿这个扩展去打水印的话,麻烦请考虑一下你是否有修改他人图片的权利,以及水印本身是否美观,谢谢。

require 'GD2'

def copy_rect(tname, fname, offx, offy, width, height, oname)
  timg = GD2::Image.new(tname)
  fimg = GD2::Image.new(fname)
  
  w, h = timg.bounds
  
  timg.copy(fimg, w-offx, h-offy, w-offx, h-offy, width, height)
  
  timg.jpeg(oname, 80)
end

没有评论 :