这个类的文件位置在:\libraries\joomla\image\image.php。如果想研究代码,可以看看这个文件。
JImage这个类提供了一个构造函数 ,构造函数可以接受一个参数,就是需要处理的图片的路径。在构造函数中,系统会检查你的php环境是否支持gd库,以及gd库所支持的文件类型。因此,关于环境方面的问题,JImage已经帮处理妥当了。
JImage类提供了一个静态方法 getImageFileProperties($path),该参数接受一个参数,就是图片的路径。返回一个对象,通过这个对象你可以得到图片的一些信息,比喻width,height,type等等。它的实现非常简单,就是简单的嚼用php的getiamgesize函数。
产生缩略图是一个比较常见的功能,JImage类提供了一个公开的方法 public function generaterThumbs($thumbsizes,$createionMethod=self::SCALE_INSIDE)
第一个参数表示要产生缩略图的大小,可以用数字或者字符串制定,例如 100*100 array('150x75','250x150');
第二个参数可以不写。默认是self::SACLE_INSIDE.主要是用来制定,产生缩略图的方式,调整大小原始图像的大小或者是裁剪原始图像。(具体代表啥意思,暂时还不清楚)
另外,还有一个createThumbs($thumbSizes ,$creationMethod ,$thumbsFolder=null)
这个函数的功能是从当前的图片创建一个缩略图,并且保存到硬盘。可以制定缩略图的文件夹的位置。
public function crop($width, $height, $left = null, $top = null, $createNew = true) 修剪当前的图片。最后一个参数是说是否创建一个新的图片,如果是的,那么克隆一个当前的图,然后处理返回。否则直接返回原图。
public function filter($type, array $options = array()) 给图片增加一个滤镜效果。可以使用 灰阶(grayscale) 模糊( skeetchy)
public function resize($width, $height, $createNew = true, $scaleMethod = self::SCALE_INSIDE) 调整图像的大小。
public function cropResize($width, $height, $createNew = true) 裁剪调整
public function rotate($angle, $background = -1, $createNew = true) 旋转当前图片
public function loadFile($path) 加载一个文件用来构建JImage对象
public function toFile($path, $type = IMAGETYPE_JPEG, array $options = array()) 将图片保存到硬盘
public function destroy() 销毁图片。默认的构造函数会自动调用这个函数,执行资源释放。
另外,还提供一些简单的公共属性获得函数:
public function isLoaded() 是否已经加载了图片
public function isTransparent() 是否透明
public function getWidth() 获得宽度
public function getHeight() 获得高度
public function getPath() 获得路径
下面 具体看一下代码:
$img = new JImage(); $filePath="test.gif"; $img->loadFile($filePath); //将图标装入对象,以便进行操作 $img->getHeight() //得到高度 单位px $img->getWidth() //得到宽度 单位px $img->getPath() //路径 全路径 $img->crop(30,50,20,20,true)->toFile('test.png',IMAGETYPE_PNG); //裁剪图标,并且生存新的文件 注意新的文件在网站的根目录下面 $img->resize(50,30)->toFile('resize.png',IMAGETYPE_PNG);; //按照比例来产生图片 $img->rotate(30,0xFF0000)->crop(60,60)->resize(50,50)->toFile('rotate.png',IMAGETYPE_PNG); //旋转图片 并且进行剪切 然后缩放 存盘 $img->cropResize(20,40)->toFile('cropresize.png',IMAGETYPE_PNG); //能够得到我们想要的大小 $img->filter("sketchy")->toFile('filter.png',IMAGETYPE_PNG); //给图片增加效果 $thumbSizes = array('150x75'); $img->createThumbs($thumbSizes); //同事创建多个缩略图