来源:http://trac.seagullproject.org/wiki/Howto/WorkingWithImages/CodeExamples/Basics

基础

包含图像工具库

require_once SGL_CORE_DIR . '/Image.php';

创建一个图像实例。

$image = new SGL_Image();

注意构造函数可以接收两个可选参数,如,图像文件名和该图像所属模块名。

$image = new SGL_Image('riga.jpg');

即使我们省略了图像文件名,图像文件名也会被设置。在这种情况下,图像文件名为:

SGL_Image#generateUniqueFileName()

在创建实例后获取自动生成的图像文件名。

$image = new SGL_Image();
$imageName = $image->getFileName();

正如上面提到的,模块名可以作为一个可选参数传递给构造函数。

$image = new SGL_Image('riga.jpg', 'mymodule');

模块名影响图像文件的存取路径。默认情况下,如果省略了模块名,保存路径相当于SGL_UPLOAD_DIR常量指定的值。而如果指定了模块名,那么路径就应该是:

SGL_MOD_DIR . '/' . $moduleName . '/www/images'

获取图像的保存路径。

$image = new SGL_Image();
$savePath = $image->getPath(); // $savePath equals to SGL_UPLOAD_DIR

$image = new SGL_Image(null, 'media');
$savePath = $image->getPath(); // $savePath equals to SGL_MOD_DIR/media/www/images

SGL_Image#getPath()是一个特殊方法,可以被静态调动也可以实例调用。下面的代码可以实现和上面代码一样的效果。

$savePath = SGL_Image::getPath('media'); // $savePath equals to SGL_MOD_DIR/media/www/images

为什么要提供一个指定图像路径的功能而不使用SGL_UPLOAD_DIR呢?在Media模块中是没用的,因为所有的图像是通过一个封装类显示的,如FileMgr#_cmd_previewMedia(),所以用户的权限被限制在这儿了,因为不可能直接通过HTTP请求访问SGL_UPLOAD_DIR目录。如果指定了模块名,其实是软链接在起作用(Media, Ecomm, Cms - 这些新的模块使用软链接将所有的数据保存在一个地方)。所以,如果你需要创建一个图像相关的模块,而该模块不需要设置用户对图像的权限,就可以尝试使用软链接和这个图像工具。还有一个特殊的方法(即可静态调用又可实例调用)。

SGL_Image#getUrl()

返回指向图像文件夹的URL。

$image = new SGL_Image(null, 'gallery');
$url = $image->getUrl(); // $url equals to SGL_BASE_URL/gallery/images
$url = SGL_Image::getUrl('gallery'); // $url equals to SGL_BASE_URL/gallery/images

Please note, if module name is not specified in constructor or, in case of static call, as argument for , PEAR_Error object will be returned. 请注意,如果没在构造函数中或者是静态调用时指定模块名作为SGL_Image::getUrl()的参数,会返回PEAR_Error对象。

$image = new SGL_Image();
$url = $image->getUrl();
if (PEAR::isError($url)) {
    echo 'module name is not specified';
}
 
howto/workingwithimages/codeexamples/basics.txt · 最后更改: 2010/05/30 00:21 (外部编辑)
 
Except where otherwise noted, content on this wiki is licensed under the following license:GNU Free Documentation License 1.2