开发了一个typecho的列表缩略图插件

Typecho确实是很不错的blog程序,最近把自己的博客从wordpress换到了Typecho,由于以前使用的wordpress首页文章列表显示了文章内的缩略图,换到typecho后就决定自己写一个缩略图插件。

插件简介

  1. 实现效果
    插件最终实现的效果如图:
    thumbnail-example.jpg
  2. 环境要求
    需要安装imagemagick扩展。
  3. 实现机制
    当文章内包含图片时就从附件中取第一张图片生成缩略图,没有图片时,不输出。

插件的使用

插件使用非常容易,只需要在模版中输入如下代码:Thumbnail_Plugin::show('文章id/图片地址','缩略大小','裁剪')即可。

  1. 函数原型
/**
* 显示文章第一张图片的缩略图
* 
* @access public
* @param type $src     图片地址 或 文章id
* @param type $size    100 或 100x 或 x100 或 100x100
* @param type $crop    1 或 0
* @author CaiXin Liao <king.liao@qq.com>
*/
public static function show($src, $size = 100, $crop = FALSE) {
    $mime = array('image/png', 'image/jpeg', 'image/gif', 'image/bmp');
    //渲染模版
    $theme = Typecho_Widget::widget('Widget_Options')->plugin("Thumbnail")->theme;
    $options = Typecho_Widget::widget('Widget_Options');
    //来源地址
    $image = array();
    if (FALSE != $image_info = self::fetchImageInfo($src)) {
        $ext = pathinfo($image_info['path']);
        $file_name = $ext['dirname'] . "/" . $ext['filename'] . "_" . $size . "_" . md5($image_info['name'] . $size) . "." . $ext['extension'];
        if (file_exists(__TYPECHO_ROOT_DIR__ . $file_name)) {
            $info = self::fetchImageInfo($file_name);
            $image['url'] = $options->siteUrl . substr($file_name, 1);
            $image['width'] = $info['width'];
            $image['height'] = $info['width'];
            $image['alt'] = $image_info['description'] ? : $image_info['name'];
        } elseif (self::checkImageMime($image_info, $mime)) {
            $image_info['save_path'] = $file_name;
            $image = self::createThumb($image_info, $size, $crop);
            $image['url'] = $options->siteUrl . $image['url'];
        }
    }
    self::bluidImageTag($theme, $image);
}
  1. 参数说明
    . $src
    可以输入文章id/图片地址。如图片在如下目录:/usr/uploads/2014/10/123456.jpg,可以这样传入:

     1. /usr/uploads/2014/10/123456.jpg
     2. usr/uploads/2014/10/123456.jpg
     3. ./usr/uploads/2014/10/123456.jpg
    

    或者直接传入id $this->cid
    . $size
    尺寸的写法也很自由,方便多种定制,下面就是各写法:

     1. 100        //默认按比例裁剪宽度为100px的图片 等同于 100x
     2. x100       //按比例裁剪高度为100px的图片.
     3. 100x100    //裁剪100x100的图片.
    

    . $crop
    图片缩略格式,是裁剪还是缩略。

  2. 支持图片缓存
    如果需要的缩略图已经存在,会直接调用图片,不会再生成一次,生成的缩略图保存在原图目录下。

  3. 支持自定义显示模版
    插件提供了一个自定义显示模版,可自由化定义图片显示的样式。

    <img src="{url}" class="thumbnail" width="{width}" height="{height}" alt="{alt}">
    

    alt信息会优先使用附件的description,不存在就会使用文件名。模版可以在后台启用后进行设置。

  4. 下一步开发
    添加在上传图片的时候进行截图处理,并把缩略图信息保存在text字段中。

插件下载及建议

有任何建议bug请在评论中提交。这是插件下载地址:Github地址

标签: typecho, thumbnail, imagemagick

添加新评论