菜鸟科技网

织梦如何获取缩略图原图,织梦如何获取缩略图原图?

在织梦(DedeCMS)系统中,获取缩略图原图是网站开发中常见的需求,尤其是当默认的缩略图尺寸无法满足特定场景时,直接调用原图能保证图片清晰度和显示效果,以下是详细的操作方法和原理说明,涵盖不同场景下的解决方案。

织梦如何获取缩略图原图,织梦如何获取缩略图原图?-图1
(图片来源网络,侵删)

理解织梦缩略图的存储机制

织梦默认的缩略图处理逻辑是:上传图片后,系统会根据后台设置的缩略图参数(如宽度、高度、是否裁剪等)生成一张新的缩略图,并将原图与缩略图路径分别存储到数据库的dedemaintables(默认数据表前缀)的addon(附加字段,如litpic)或body)字段中,文章缩略图通常存储在litpic字段,而文章内容中的图片则以HTML标签形式存在于body字段。

获取文章缩略图的原图

若需获取文章列表页或内容页中缩略图的原图,可通过以下步骤实现:

  1. 检查原图路径存储字段
    织梦默认不会在数据库中直接存储原图路径,但可以通过修改系统或利用字段扩展实现,若未修改过系统,需通过litpic字段反推原图路径。

    • 默认规则:litpic存储的路径格式为/uploads/x/y/abc_thumb.jpg,其中_thumb为缩略图标识,原图路径则为/uploads/x/y/abc.jpg
    • 实现方法:通过PHP字符串替换函数去除_thumb标识,
      $original_pic = str_replace('_thumb', '', $arcLitpic); // $arcLitpic为从数据库获取的缩略图路径
  2. 直接调用原图(需修改系统)
    若希望系统直接存储原图路径,可通过以下步骤修改:

    织梦如何获取缩略图原图,织梦如何获取缩略图原图?-图2
    (图片来源网络,侵删)
    • 进入织梦后台“系统”-“系统基本参数”-“附件设置”,将“缩略图默认扩展名”设为空,避免自动添加_thumb
    • 修改文件include/helpers/upload.helper.php,找到生成缩略图的函数(如ResizeImg),注释或删除缩略图保存逻辑,仅保留原图。

获取文章内容中的原图body字段)中的图片通常通过<img>标签的src属性引用缩略图,获取原图需解析HTML标签并替换路径:

  1. 使用正则表达式提取原图路径
    织梦默认的图片上传会在body中插入缩略图,原图路径可通过data-original属性或反推得到,示例代码:

    $content = $arcRow['body']; // 文章内容
    // 提取所有img标签的src
    preg_match_all('/<img\s+[^>]*src=["\']([^"\']+)["\'][^>]*>/i', $content, $matches);
    $original_images = [];
    foreach ($matches[1] as $imgUrl) {
        if (strpos($imgUrl, '_thumb') !== false) {
            $original_img = str_replace('_thumb', '', $imgUrl);
            $original_images[] = $original_img;
        }
    }
  2. 利用织梦内置函数调用原图
    若开启了“远程图片本地化”,原图路径可能存储在dedemaintablesupload表中,可通过GetOne查询获取:

    $dsql->SetQuery("SELECT filepath FROM `dede_uploads` WHERE url = '$imgUrl'");
    $row = $dsql->GetOne();
    $original_path = $row['filepath'];

通过自定义字段获取原图

若需要在自定义字段中直接调用原图,可创建一个字段类型为“图片”的自定义字段,并在上传时勾选“保留原图”,调用时直接输出该字段的值即可,无需额外处理。

常见问题与解决方案

以下是两个高频问题的解答:

织梦如何获取缩略图原图,织梦如何获取缩略图原图?-图3
(图片来源网络,侵删)

问题1:为什么修改了upload.helper.php后,缩略图仍然生成?
解答:可能是因为缓存或插件冲突,需清除后台缓存,并检查是否有其他插件调用了缩略图生成函数(如imageResize),确保修改的文件路径正确,织梦存在多版本文件差异。

问题2:文章内容中的原图路径反推失败怎么办?
解答:若原图路径未遵循_thumb规则(如使用自定义缩略图后缀),需通过FTP查看服务器上的实际文件命名规则,调整正则表达式匹配逻辑,若缩略图后缀为_small,则将代码中的_thumb替换为_small

通过以上方法,可有效解决织梦系统中获取缩略图原图的需求,提升网站图片显示质量,实际操作中需根据具体版本和配置灵活调整,建议修改前备份文件以防意外。

分享:
扫描分享到社交APP
上一篇
下一篇